Email tools

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.

Max Korolev
Max KorolevFounder & CEO, Outreach2dayPublished 5 min read
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 (x-api-key)

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

  1. Create an API key. In the Outreach2day app, open the API keys page and create a key only for this agent (ot2d_...).

  2. Save the definition. Save the JSON above as outreach2day.json.

  3. 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.

  4. 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.

  5. 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.

  6. 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; 429 with Retry-After over 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.

Create an account, add mailboxes, then create a key for your agent.

Get an API key

Free guide

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 read
  • Email 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

See deliverability issues before they kill performance

Monitor mailbox health in real time, spot degradation early, and keep warmup, protection, and sending in one place.