MCP App Store
by KeenEthics

Overview

Windsor.ai connects your marketing and business data sources to your AI assistant, so you can ask questions and take action in plain English. It pulls performance data from any connected source, and on supported ad and marketing platforms it can make changes directly, such as pausing or enabling a campaign, setting a budget, creating a Google Business Profile post, or replying to a review, always after you confirm. Common workflows: - Compare spend, clicks, and conversions across every connected ad account - Find and pause an underperforming Meta Ads, Google Ads, TikTok Ads, LinkedIn Ads, or Microsoft Ads campaign - Post or reply as your Instagram, Threads, Facebook, or Google Business Profile account - Pull GA4, Google Search Console, or YouTube Analytics data straight into the conversation - Sync HubSpot, Salesforce, or Shopify records - Update a Klaviyo flow or an Amazon Seller Central listing Connects to 350+ sources across advertising, analytics, organic social, CRM, e-commerce, email, and payments, including Google Ads, Meta (Facebook) Ads, Instagram, TikTok Ads, LinkedIn Ads, LinkedIn Company Pages, Microsoft Ads (Bing), GA4, Google Search Console, YouTube, Google Business Profile, HubSpot, Salesforce, Shopify, Klaviyo, Amazon Ads, Google Merchant Center, Stripe, and GoHighLevel. Reading data only requires connecting the relevant account once. Making a change (pausing a campaign, posting content, replying to a review) always asks for your confirmation first, and it is only available on platforms Windsor explicitly supports write access for. Every other connected source is read-only. Free plan available, no credit card required. Windsor.ai is an independent product and is not affiliated with or endorsed by the platforms it connects to.

Tools

contact_windsor

ChatGPT
Windsor.ai: Send feedback, a support request, or a feature request. Reports a problem, shares feedback, or suggests a feature. Inquiries are recorded in English. Returns a reference ID the user can share with Windsor.ai support.

create_custom_field

ChatGPT
Windsor.ai: Create a custom (formula) field on a connector. A custom field is a user-defined metric or dimension computed from a connector's existing fields; once created it behaves like a normal field in get_fields, get_data and scheduled exports. Useful for recreating calculated fields when migrating from another platform. Call get_fields first for the connector's valid source field ids, and get_custom_fields to avoid creating a duplicate. This stores configuration in the user's Windsor.ai account — confirm the field with the user before creating it.

create_destination_task

ChatGPT
Windsor.ai: Create a scheduled export of connector data to a destination. Call get_destinations and get_destination_setup_info first for the destination_type, its target fields and a credential_id, and get_fields for the source field ids. This creates recurring external state, and each run replaces matching rows in the destination target, deleting what was there — confirm the source, destination target, and schedule with the user before calling. Only works when the destination's create_in_chat is true; otherwise use its setup_url. Never put secrets in config; the user enters those in the dashboard form.

execute_action

ChatGPT
Windsor.ai: Execute a write action on a connector account. Runs an action id from list_actions against an account id from get_connectors, with params matching the action's JSON schema. This modifies external platform state — confirm intent with the user before invoking.

get_connector_authorization_url

ChatGPT
Get the URL to connect or authorize a Windsor.ai connector. Always call get_connectors(include_not_yet_connected=True) first to obtain the correct connector ID. Returns a URL the user can open in their browser to set up the connector, whether it uses OAuth or manual credential input.

get_connector_connect_info

ChatGPT
Describe how the user can grant access to a connector, to guide it in chat. Always call get_connectors(include_not_yet_connected=True) first to obtain the correct connector ID. Returns: - auth_type: "oauth" if the connector needs provider consent in the browser, or "manual" if it is connected with credentials (e.g. an API key); - connect_url: a link the user opens in their browser to grant access, signed in by their existing Windsor.ai session (or asked to sign in first if it has expired). For OAuth it jumps straight into the provider consent screen; for manual connectors it opens the credentials form prefilled for that connector; - fields: for manual connectors, the credential fields the user must provide (name, type, whether required, and whether the value is sensitive). Empty for OAuth connectors; - notes: a provider-specific step the user must get right on the consent screen (e.g. YouTube: pick the Brand Account, not the personal Google account). Null for most connectors. Use this to answer "how do I connect/grant access to X": for OAuth, hand the user the connect_url and tell them to authorize, repeating notes verbatim when present; for manual connectors, tell them which fields are needed and give them the connect_url to enter them. Sensitive fields (API keys, tokens, passwords) must be entered by the user in that form — never ask them to paste secrets into the chat. Afterwards, confirm the connection by calling get_connectors and reporting the new account. If get_connectors still shows no account for that connector, the connection is not finished: after an OAuth sign-in an account still has to be selected, with a login that can access it; for manual connectors the form was not saved. Send them back to the connect_url. Use this for any request to connect, grant access to, authorize, add, replace, or reconnect a connector account, including adding another account to an already-connected connector. Do not substitute prose dashboard navigation steps for the connect_url.

get_connectors

ChatGPT
Get Windsor.ai connectors and their connected accounts. By default returns only connectors that already have connected accounts. Pass include_not_yet_connected=True to also include all connectors the user can connect.

get_current_user

ChatGPT
Get details of the currently authenticated user, including their username and email.

get_custom_fields

ChatGPT
Windsor.ai: List the user's custom (formula) fields across connectors. A custom field is a user-defined metric or dimension computed from a connector's existing fields with a formula (for example spend times a margin, or a CPA). Each entry reports the connector it belongs to, its field_name, the generated field_id used in get_data/get_fields, its type (NUMERIC or TEXT), and the formula. Call this before create_custom_field to see which fields already exist and avoid creating duplicates.

get_data

ChatGPT
Retrieve data from a Windsor.ai connector.

get_destination_setup_info

ChatGPT
Windsor.ai: Describe how to set up a scheduled export to a destination. Always call get_destinations first to get the correct destination id. Returns the auth type, the target fields describing where data is written, the allowed schedules, reusable credentials (OAuth or service account), and a setup_url link to the dashboard form. Sensitive fields (service accounts, passwords, keys) are entered by the user in the setup_url form — never ask them to paste secrets into chat. When create_in_chat is true, collect the non-sensitive target fields and call create_destination_task; otherwise hand the user the setup_url.

get_destination_tasks

ChatGPT
Windsor.ai: List the scheduled export tasks the user has created. A destination task is a recurring export of a connector's data to a destination. Each entry reports its id, destination type and name, alias, source connector, schedule, and status (active, paused, or deactivated), plus a manage_url to open it in the dashboard. Use this when the user asks what exports, syncs, or destination tasks they already have, or before creating one to avoid duplicates.

get_destinations

ChatGPT
Windsor.ai: List destinations that can receive scheduled data exports. A destination is where Windsor.ai repeatedly writes a connector's data on a schedule — BigQuery, Google Sheets, Snowflake, a database, or cloud storage. Each entry reports its type, whether a task can be created here (create_in_chat), and any reusable credentials the user already has (an OAuth connection or a stored service account). Call this first when the user wants to export, send, sync, or schedule connector data, then get_destination_setup_info for the chosen destination.

get_fields

ChatGPT
Get detailed information about specific fields of a Windsor.ai connector.

get_options

ChatGPT
Get available fields, date filters and options for a Windsor.ai connector.

get_windsor_login_url

ChatGPT
Windsor.ai: Get a URL into the Windsor.ai dashboard. The user opens it in their browser and is signed in by their existing Windsor.ai session; if that has expired they are asked to sign in first. next_path optionally deep-links to a specific page.

list_actions

ChatGPT
Windsor.ai: List a connector's write actions with their param JSON schemas. Meta Ads ("facebook"): create/pause/enable campaigns, ad sets, and ads; set campaign and ad set budgets; boost an organic post. Google Ads ("google_ads"): create campaigns, ad groups, and responsive search ads; pause/enable campaigns, ad groups, and ads; set campaign budget, bidding strategy, target CPA, max CPC, and CPC bid ceiling; push negative keywords. TikTok Ads ("tiktok"): pause/enable campaigns, ad groups, and ads; set campaign and ad group budgets. LinkedIn Ads ("linkedin"): pause/enable campaign groups, campaigns, and creatives; set campaign group and campaign budgets. Microsoft Ads / Bing ("bing"): pause/enable campaigns and ad groups; set campaign budget. Instagram ("instagram"): create an image post; comment on a post — an account connected before comment access was added returns a permission error until it is reconnected. Other connectors return an empty list. The actual set is whatever this tool returns — do not assume an action exists. Inspect an action's schema before execute_action.

upload_files

ChatGPT
Windsor.ai: Let the user upload local files to a connector action. For actions whose list_actions entry has requires_files true, such as Meta Ads create_ad_image; execute_action cannot run those. Opens an upload widget in the chat where the user picks the files, which go from their browser to Windsor.ai without passing through the assistant. When the upload finishes its result appears in the conversation (for create_ad_image, one image_hash per file, usable as image_hash in execute_action create_ad). The upload link is valid for ten minutes and for one successful upload. Clients that cannot show the widget can run the curl command in the result instead.

get_accounts

Claude

get_connectors

Claude

get_data

Claude

get_fields

Claude

get_options

Claude

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

App Stats

23

Tools

3

Prompts

ChatGPT, Claude

Platforms

Works with

ChatGPT
Claude

Data refreshed daily