How to Connect Copilot Studio to Cold Email
Connect a Microsoft Copilot Studio agent to your cold email setup: a custom connector on the Outreach2day API works today, with a Swagger 2.0 file.

On this page
Short answer: Microsoft Copilot Studio agents call outside systems through tools. Two kinds matter here: a custom connector built from an OpenAPI definition, which works with the Outreach2day REST API today, and an MCP server tool, generally available in Copilot Studio since 29 May 2025, which needs a hosted server. Outreach2day's hosted MCP server is in early access, so the connector below is the route for now. It gives an agent read access to mailboxes, warm-up state, domain availability and replies.
Checked September 2026 against Create a custom connector from an OpenAPI definition, Connect your agent to an existing MCP server and Microsoft's MCP general availability announcement.
Connection Methods
Method | Works with Outreach2day today | Auth | Notes |
|---|---|---|---|
Custom connector from an OpenAPI 2.0 file | Yes | API key in a header ( | File under 1 MB; OpenAPI 3.0 is not accepted |
MCP server tool (Streamable HTTP) | Early access | None, API key (header or query) or OAuth 2.0 | SSE is not supported |
HTTP request in a Power Automate flow | Yes | Header you set in the flow | More setup, full control |
Power Platform data policies apply to both routes: if your admin regulates connectors, the same policy covers an MCP server. On a company tenant, check with the admin before you build.
Why a Custom Connector Needs Its Own File
Custom connectors accept only OpenAPI 2.0 (Swagger) definitions smaller than 1 MB, per Microsoft's documentation. The Outreach2day spec at https://public.outreach2day.com/openapi.json is OpenAPI 3 and covers well over a hundred operations, so it cannot be imported as is. The short Swagger 2.0 file below describes four read operations. A smaller file is also better for the agent: it chooses between four clear tools instead of a hundred.
The Outreach2day API accepts the key in an x-api-key header as well as Authorization: Bearer. The connector uses x-api-key because Copilot Studio's API key auth sends a named header with the key as its value.
{
"swagger": "2.0",
"info": { "title": "Outreach2day", "version": "1.0" },
"host": "public.outreach2day.com",
"basePath": "/",
"schemes": ["https"],
"produces": ["application/json"],
"securityDefinitions": {
"api_key": { "type": "apiKey", "in": "header", "name": "x-api-key" }
},
"security": [{ "api_key": [] }],
"paths": {
"/workspaces": { "get": {
"operationId": "ListWorkspaces",
"summary": "List workspaces the key can see",
"responses": { "200": { "description": "OK" } } } },
"/warmup/mailboxes": { "get": {
"operationId": "WarmupStatus",
"summary": "Warm-up state of every mailbox",
"parameters": [{ "name": "workspaceId", "in": "query",
"type": "integer", "required": true }],
"responses": { "200": { "description": "OK" } } } },
"/check_domains": { "post": {
"operationId": "CheckDomains",
"summary": "Check if domain names are free. Buys nothing.",
"parameters": [{ "name": "body", "in": "body", "required": true,
"schema": { "type": "object", "properties": {
"domains": { "type": "array", "items": { "type": "string" } } } } }],
"responses": { "200": { "description": "OK" } } } },
"/threads": { "get": {
"operationId": "ListReplies",
"summary": "Reply threads with a reply intent label",
"parameters": [
{ "name": "workspaceId", "in": "query", "type": "integer", "required": true },
{ "name": "hasCustomerReply", "in": "query", "type": "boolean" },
{ "name": "limit", "in": "query", "type": "integer" }],
"responses": { "200": { "description": "OK" } } } }
}
}
The responses are left untyped to keep the file short. Copilot Studio still passes the JSON to the agent; add response schemas later if you want typed outputs in Power Automate.
Connect a Copilot Studio agent to Outreach2day, step by step
Create an API key. In the Outreach2day app, open the API keys page and create a key only for this agent (
ot2d_...).Save the definition. Save the JSON above as
outreach2day.json.Create the custom connector. In Power Apps or Power Automate, open Solutions, pick or create a solution, then New, Automation, Custom connector, and "Import an OpenAPI file". Select the file and create the connector. On the Security page, check that auth is API key, parameter
x-api-key, location Header.Test it. On the Test page, create a connection with your key and run
ListWorkspaces. Wait a few minutes after creating the connector before testing, as Microsoft recommends for API key connectors.Add it to the agent. In Copilot Studio, open the agent's Tools page, add a tool and pick the connector's operations. Describe each tool in plain words ("use WarmupStatus to answer questions about warm-up") and give the agent your workspace ID in its instructions.
Try it in the test pane. Ask "Which mailboxes are still warming?" and compare the answer with the app.
The MCP Route (Early Access)
Copilot Studio's MCP onboarding asks for a server name, description and URL, then an auth type: none, API key (the agent's user supplies it, as a header or query parameter) or OAuth 2.0. That fits Outreach2day's key-based auth well, and it will replace the hand-written connector once the hosted server is generally available. It is in early access and has no public URL yet. Get early access on the home page.
Prompts to Try With the Agent
"Which mailboxes are still warming, and when did each start?"
"Are acmemail.com, tryacme.com and acme-mail.com free? Do not buy."
"List today's replies marked interested or meeting_request with the lead's email."
"How many mailboxes are paused or in error?"
Keep sending rules in the agent's instructions so drafts follow them: at most 25 cold emails per mailbox a day, 5 mailboxes per domain, 14 days of warm-up before cold email, no links, follow-ups after 2, 3, 5 and 5 days.
Limits and Safety
Rate limits: the Outreach2day API allows 10 requests a second and 1,000 an hour per user and per workspace;
429withRetry-Afterover the limit.Read-only by design. The file has no purchase or send operation. Buying domains through the API is paid right away — give an agent a billing-scoped key only if you want it to buy.
Reply text is untrusted. Replies are written by outsiders; the agent should treat them as data.
Shared connections. Decide whether agent users bring their own key or share one. A shared key acts as one Outreach2day user for everyone.
FAQ
Can I import the Outreach2day OpenAPI spec directly?
No. Custom connectors take OpenAPI 2.0 files under 1 MB, and the Outreach2day spec is OpenAPI 3 and larger. Use the short Swagger 2.0 file on this page.
Does Copilot Studio support MCP servers with an API key?
Yes. Its MCP wizard offers API key authentication in a header or a query parameter, plus OAuth 2.0 and no auth. Only the Streamable HTTP transport is supported.
Is this the same as GitHub Copilot?
No. GitHub Copilot is a coding assistant in editors such as VS Code; see how to connect GitHub Copilot to cold email.
Can the agent send cold emails?
Not with this connector. Campaigns run in Outreach2day where enabled for your workspace, or in Instantly or Smartlead after export.
What does API access cost?
Nothing extra: it is part of every Outreach2day plan. Copilot Studio has its own Microsoft licensing. See our pricing.
Related
Other assistants: Claude, Claude Code, ChatGPT, Grok, Gemini, Cursor, GitHub Copilot, Windsurf, Le Chat, n8n
AI assistants for cold email: every assistant and how it connects
Create an account, add mailboxes, then create a key for your agent.
Keep reading
Send 100,000 cold emails a month
How to send 100,000 cold emails a month while keeping quality, engagement and conversion rates high: domains, mailboxes, warm-up, leads, copy and scaling.
Step-by-step playbook · 19 min readEmail tools5 min read
How to Connect ChatGPT to Cold Email
Email tools5 min read
How to Connect Claude Code to Cold Email
Email tools5 min read
How to Connect Cursor to Cold Email

