A ChatGPT workspace agent is an agent you build once in a ChatGPT Business, Enterprise or Edu workspace. It runs on request, on a schedule, in Slack or from an API call, and it uses the apps and MCP servers you add to it. With Windsor.ai added, it can read Google Ads, GA4, Meta Ads and 350+ other sources and write the same report every week.
To set one up, an admin adds Windsor.ai as a custom MCP plugin in the OpenAI Admin Console. You sign in to Windsor.ai, refresh the plugin’s tool list and add the plugin to the agent with read access only. Then you write the report instructions and add a schedule.
The Windsor.ai plugin in ChatGPT’s plugin directory works in ordinary chats. On 13 October 2026 it did not appear in the agent builder’s list of apps. For agents, add Windsor.ai as a custom MCP plugin instead.
- You need a workspace admin. On Business plans, only admins and owners can turn on developer mode and create a custom MCP plugin.
- Refresh the tool list after you sign in to Windsor.ai. Our plugin showed 0 tools until I did, and the agent builder would not add it.
- The totals matched the source, with one exception. In two test runs the agent’s spend matched Windsor.ai to the cent. Its conversion count for the previous week was one lower than the source.
I built and ran this agent on 13 October 2026 in windsor.ai’s own ChatGPT Business workspace, on our Google Ads account.
What a workspace agent can do with marketing data
| Part of the agent | What it does and what to know |
|---|---|
| Apps | Reads data in the tools you connect, and writes to them only if you allow it. One Windsor.ai plugin covers every source connected in your Windsor.ai account. |
| Schedule | Runs the agent on the weekdays and at the time you choose. Scheduled runs appear in the agent’s Activity tab. |
| Channels | ChatGPT, Slack, or an API trigger. Slack needs a shared (agent-owned) connection for every app. |
| Accounts | Each person signs in with their own account, or the agent uses one shared account. OpenAI recommends a service account for the shared option. |
| Write actions | Each write tool can be switched on or off for the agent. A reporting agent needs none of them. |
Workspace agents are a different product from Agent Builder on OpenAI’s developer platform. OpenAI is shutting Agent Builder down on 30 November 2026.
Before you start
- A ChatGPT Business, Enterprise or Edu workspace with workspace agents turned on. On Enterprise they are off until an admin enables them.
- An admin or owner of that workspace for step 1.
- A Windsor.ai account with your sources connected. A report on Google Ads alone uses one data source, which the free forever plan covers, with no credit card. A report that combines Google Ads with GA4 or Meta Ads needs more sources after the first 30 days: paid plans start at $19 a month (billed annually) for three sources, or $99 a month for seven. See Windsor.ai pricing.
Step 1: create the Windsor.ai MCP plugin
Open the OpenAI Admin Console at admin.openai.com and select your workspace. Go to Plugins, click Add and choose Create MCP plugin.

Fill in the form:
- Custom name: Windsor.ai MCP (any name works; this is what the agent builder shows).
-
Connection: Server URL,
https://mcp.windsor.ai/ - Authentication: OAuth.
If the form shows Enable developer mode, click it. On Business plans each admin turns developer mode on for their own account. Read the risk notice, tick I understand and want to continue and click Create. When ChatGPT asks you to sign in to Windsor.ai, use the Windsor.ai account that holds the data the agent should read.

Windsor.ai’s MCP server lists its tools only to a client that has signed in. Its OAuth setup issues refresh tokens, which keep the connection signed in after the first token expires.
Step 2: refresh the tool list
ChatGPT reads a custom plugin’s tool list and keeps a snapshot of it. In our test ChatGPT took the snapshot before the Windsor.ai sign-in, and the plugin listed 0 tools. When I asked the agent builder to add it, the builder answered that the plugin “exposes no available actions”.
To fix it, open ChatGPT and go to Settings, then Plugins, and select Windsor.ai MCP. The page shows the connected Windsor.ai account and OAuth as the authorization used.

Further down, under Manage app, click Refresh tools. After that the agent builder added the plugin at once.

ChatGPT does not update a custom plugin’s tools on its own. Refresh again when Windsor.ai adds new tools.
Step 3: create the agent and add Windsor.ai with read access
In ChatGPT, open Agents in the sidebar (when the sidebar is collapsed, it is under the … menu) and click Create. Start blank opens the builder, with a chat on the left and the agent’s settings on the right.
The custom plugin did not appear under Browse apps in our workspace. I added it through the builder chat with this message:
Add the workspace plugin "Windsor.ai MCP" to this agent as a tool, with read-only actions. Don't change anything else.

Click the Windsor.ai MCP chip under Apps to check two settings:
- Which account the agent uses. With End-user account, each person who runs the agent signs in with their own Windsor.ai login. With Agent-owned account, everyone uses one connection. While the plugin is in developer mode, the builder used the admin’s own Windsor.ai connection as the agent-owned account. Anyone who runs the agent then reads data through that login. Share the agent only with people who may see that data.
- Write actions. Windsor.ai’s write tools (Execute Action, Create Destination Task, Create Custom Field, Upload Files and Contact Windsor) were all switched off when I added the plugin with read-only actions. Keep them off for a reporting agent. Execute Action can pause campaigns and change budgets on Google Ads, Meta Ads and other ad platforms.

Step 4: write the report instructions
Paste the instructions into the builder chat, or into the Instructions field. These are the instructions our agent runs, shortened:
Every run, use Windsor.ai to pull Google Ads data for the last full week (Monday to Sunday) and the week before, for every connected Google Ads account. First call the tool that lists connectors and accounts, and get valid field IDs before you request data. Fields: date, account name, campaign, spend, impressions, clicks, conversions, conversion value. Report in this order: 1. A headline with spend, conversions and CPA against the previous week, with % change. 2. The top 5 campaigns by spend, with the same metrics and their week-over-week change. 3. The 3 campaigns with the largest change in conversions, at any spend level. 4. Campaigns whose CPA rose more than 20% with at least 50 in spend, with one sentence on what changed. 5. Campaigns that spent with zero conversions. Sum conversions from the raw rows before you calculate CPA. Leave ROAS out if conversion values are zero or look like placeholders. Use each account's currency and never add different currencies together. If a call fails or returns no rows, say so and stop. Use read actions only.
I added two of these lines after the first test run. That run listed only the top five campaigns by spend and did not mention a low-spend brand campaign that caused most of the week’s drop in cost per conversion. The instructions now ask for the largest changes in conversions at any spend level. The ROAS line is there because our account records conversion values as round placeholder amounts. On the second run the agent left ROAS out and said why.
Step 5: preview a run and check the numbers
Click Preview and send a short prompt such as “Run this week’s Google Ads summary.” Our agent called three Windsor.ai tools in order (get connectors, get fields, get data), and each run took a little over a minute.


Check the agent’s first reports against the source before you schedule it. In both test runs, spend matched Windsor.ai to the cent for both weeks, and conversions matched for the current week. For the previous week the agent reported one conversion fewer than the source, which moved that week’s CPA by about half a percent. Google Ads also adds late conversions to past days. Compare each report with source data pulled at the same time.
Step 6: schedule the agent
Click Create to save the agent first; schedules run only on a saved agent. Then click Automations. Under Daily, pick the weekdays, a time and a time zone (the other option is Interval). Choose the channel, add optional instructions for the scheduled run and click Add automation. I set Monday at 9:00 AM on the ChatGPT channel. Scheduled runs appear in the agent’s Activity tab.

To post the report in Slack, add the ChatGPT Agents app to the Slack channel, then add a Slack channel to the agent under Channels. For Slack, every app on the agent must use an agent-owned connection. Keep the agent read-only and post to a channel that only your team can read. I did not test the Slack channel; these steps come from OpenAI’s help article on workspace agents.
Other reports to build the same way
Each of these is a separate agent with the same Windsor.ai plugin. The first needs three data sources; the other two need one each.
A cross-channel spend report for Monday morning:
Every Monday, pull last week's spend, clicks and conversions from Google Ads and Meta Ads, and sessions and key events by source from GA4, through Windsor.ai. Show one table per channel and a total row, each with the change against the week before. Flag any channel whose cost per conversion rose more than 20%.
Search Console pages that lost clicks:
Every Monday, pull clicks, impressions and average position by page from Search Console through Windsor.ai for the last 7 days and the 7 days before. List the 10 pages that lost the most clicks, with the queries that lost the most impressions on each page. Search Console data is 2 to 3 days behind, so state the latest date in the data.
Monthly budget pacing:
Every weekday, pull month-to-date spend by campaign from Google Ads through Windsor.ai. Compare it with an even daily pace for the month and list campaigns more than 15% above or below pace. Do not change any budget.
Conclusion
A workspace agent with Windsor.ai sends your team the same marketing report on a schedule. It takes an admin to create the custom MCP plugin, one refresh of the tool list after the Windsor.ai sign-in, and instructions that say exactly which numbers to report. Keep the write actions off and check the first few reports against the source before you share them.
To use Windsor.ai in ordinary ChatGPT chats, install the Windsor.ai plugin from the directory; the steps are in how to connect Google Ads to ChatGPT. Introducing Windsor MCP covers what the Windsor.ai MCP server can do in any client. For a report only you receive, a scheduled task in ChatGPT Work uses the Windsor.ai plugin directly, without the custom MCP plugin; Claude Cowork vs ChatGPT Work sets one up with the same weekly report.
🚀 Connect Google Ads, GA4, Meta Ads and 350+ sources to ChatGPT with Windsor.ai. Free forever plan, no credit card. Try Windsor.ai.
FAQs
Can I add the Windsor.ai plugin from the ChatGPT directory to a workspace agent?
No, not as of 13 October 2026. The plugin works in ordinary ChatGPT chats, but it did not appear in the agent builder’s list of apps. For an agent, an admin adds Windsor.ai as a custom MCP plugin with the server URL https://mcp.windsor.ai/ and OAuth.
Can the agent change my ad campaigns?
No, not while Windsor.ai’s write actions are switched off for the agent. With Execute Action switched on, it could pause campaigns or change budgets on Google Ads, Meta Ads and other ad platforms. Leave it off for a reporting agent.
Does everyone who uses the agent need a Windsor.ai account?
No, if the agent uses an agent-owned account: everyone reads data through that one connection. With an end-user account, each person signs in with their own Windsor.ai login and sees the data their own account can reach.
Is a workspace agent the same as OpenAI Agent Builder?
No. Agent Builder is a tool on OpenAI’s developer platform for building agent workflows in code or on a canvas, and OpenAI is shutting it down on 30 November 2026. Workspace agents are built and run inside ChatGPT.
Does the Windsor.ai free plan work for this?
Yes, for a report on one data source such as Google Ads. The free forever plan covers one source with no credit card. A report that combines several sources needs a paid plan after the first 30 days, from $19 a month (billed annually) for three sources.


