{
  "schemaVersion": "1.0",
  "item": {
    "slug": "microsoft-ads-mcp",
    "name": "Microsoft Ads MCP",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Duartemartins/microsoft-ads-mcp",
    "canonicalUrl": "https://clawhub.ai/Duartemartins/microsoft-ads-mcp",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/microsoft-ads-mcp",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=microsoft-ads-mcp",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/microsoft-ads-mcp"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/microsoft-ads-mcp",
    "agentPageUrl": "https://openagent3.xyz/skills/microsoft-ads-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/microsoft-ads-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/microsoft-ads-mcp/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Microsoft Ads MCP Server",
        "body": "Create and manage Microsoft Advertising campaigns programmatically. This MCP server enables full campaign management for Bing and DuckDuckGo search ads."
      },
      {
        "title": "Why Microsoft Advertising?",
        "body": "DuckDuckGo Integration - Microsoft Advertising powers DDG search ads, reaching privacy-conscious users\nLower CPCs - Often 30-50% cheaper than Google Ads\nBing + Yahoo + AOL - Access to the full Microsoft Search Network\nImport from Google - Easy migration of existing campaigns"
      },
      {
        "title": "1. Install the MCP server",
        "body": "git clone https://github.com/Duartemartins/microsoft-ads-mcp-server.git\ncd microsoft-ads-mcp-server\npip install -r requirements.txt"
      },
      {
        "title": "2. Get credentials",
        "body": "Microsoft Ads Account: Sign up at ads.microsoft.com\nDeveloper Token: Apply at developers.ads.microsoft.com\nAzure AD App: Create at portal.azure.com with redirect URI https://login.microsoftonline.com/common/oauth2/nativeclient"
      },
      {
        "title": "3. Configure mcporter",
        "body": "Add to ~/.mcporter/mcporter.json:\n\n{\n  \"mcpServers\": {\n    \"microsoft-ads\": {\n      \"command\": \"python3\",\n      \"args\": [\"/path/to/microsoft-ads-mcp-server/server.py\"],\n      \"type\": \"stdio\",\n      \"env\": {\n        \"MICROSOFT_ADS_DEVELOPER_TOKEN\": \"your_token\",\n        \"MICROSOFT_ADS_CLIENT_ID\": \"your_azure_app_client_id\"\n      }\n    }\n  }\n}"
      },
      {
        "title": "4. Authenticate",
        "body": "mcporter call microsoft-ads.get_auth_url\n# Open URL in browser, sign in, copy redirect URL\nmcporter call microsoft-ads.complete_auth '{\"redirect_url\": \"https://login.microsoftonline.com/common/oauth2/nativeclient?code=...\"}'"
      },
      {
        "title": "Account Management",
        "body": "mcporter call microsoft-ads.search_accounts"
      },
      {
        "title": "Campaign Operations",
        "body": "# List campaigns\nmcporter call microsoft-ads.get_campaigns\n\n# Create campaign (starts paused for safety)\nmcporter call microsoft-ads.create_campaign '{\"name\": \"My Campaign\", \"daily_budget\": 20}'\n\n# Activate or pause\nmcporter call microsoft-ads.update_campaign_status '{\"campaign_id\": 123456, \"status\": \"Active\"}'"
      },
      {
        "title": "Ad Groups",
        "body": "# List ad groups\nmcporter call microsoft-ads.get_ad_groups '{\"campaign_id\": 123456}'\n\n# Create ad group\nmcporter call microsoft-ads.create_ad_group '{\"campaign_id\": 123456, \"name\": \"Product Keywords\", \"cpc_bid\": 1.50}'"
      },
      {
        "title": "Keywords",
        "body": "# List keywords\nmcporter call microsoft-ads.get_keywords '{\"ad_group_id\": 789012}'\n\n# Add keywords (Broad, Phrase, or Exact match)\nmcporter call microsoft-ads.add_keywords '{\"ad_group_id\": 789012, \"keywords\": \"buy widgets, widget store\", \"match_type\": \"Phrase\", \"default_bid\": 1.25}'"
      },
      {
        "title": "Ads",
        "body": "# List ads\nmcporter call microsoft-ads.get_ads '{\"ad_group_id\": 789012}'\n\n# Create Responsive Search Ad\nmcporter call microsoft-ads.create_responsive_search_ad '{\n  \"ad_group_id\": 789012,\n  \"final_url\": \"https://example.com/widgets\",\n  \"headlines\": \"Buy Widgets Online|Best Widget Store|Free Shipping\",\n  \"descriptions\": \"Shop our selection. Free shipping over $50.|Quality widgets at great prices.\"\n}'"
      },
      {
        "title": "Reporting",
        "body": "# Submit report request\nmcporter call microsoft-ads.submit_campaign_performance_report '{\"date_range\": \"LastWeek\"}'\nmcporter call microsoft-ads.submit_keyword_performance_report '{\"date_range\": \"LastMonth\"}'\nmcporter call microsoft-ads.submit_search_query_report '{\"date_range\": \"LastWeek\"}'\nmcporter call microsoft-ads.submit_geographic_report '{\"date_range\": \"LastMonth\"}'\n\n# Check status and get download URL\nmcporter call microsoft-ads.poll_report_status"
      },
      {
        "title": "Other",
        "body": "mcporter call microsoft-ads.get_budgets\nmcporter call microsoft-ads.get_labels"
      },
      {
        "title": "Complete Workflow Example",
        "body": "# 1. Check account\nmcporter call microsoft-ads.search_accounts\n\n# 2. Create campaign\nmcporter call microsoft-ads.create_campaign '{\"name\": \"PopaDex - DDG Search\", \"daily_budget\": 15}'\n# Returns: Campaign ID 123456\n\n# 3. Create ad group\nmcporter call microsoft-ads.create_ad_group '{\"campaign_id\": 123456, \"name\": \"Privacy Keywords\", \"cpc_bid\": 0.75}'\n# Returns: Ad Group ID 789012\n\n# 4. Add keywords\nmcporter call microsoft-ads.add_keywords '{\n  \"ad_group_id\": 789012,\n  \"keywords\": \"privacy search engine, private browsing, anonymous search\",\n  \"match_type\": \"Phrase\",\n  \"default_bid\": 0.60\n}'\n\n# 5. Create ad\nmcporter call microsoft-ads.create_responsive_search_ad '{\n  \"ad_group_id\": 789012,\n  \"final_url\": \"https://popadex.com\",\n  \"headlines\": \"PopaDex Private Search|Search Without Tracking|Privacy-First Search Engine\",\n  \"descriptions\": \"Search the web without being tracked. No ads, no profiling.|Your searches stay private. Try PopaDex today.\"\n}'\n\n# 6. Activate campaign\nmcporter call microsoft-ads.update_campaign_status '{\"campaign_id\": 123456, \"status\": \"Active\"}'\n\n# 7. Check performance after a few days\nmcporter call microsoft-ads.submit_campaign_performance_report '{\"date_range\": \"LastWeek\"}'\nmcporter call microsoft-ads.poll_report_status"
      },
      {
        "title": "Match Types",
        "body": "TypeSyntaxTriggersBroadkeywordRelated searches, synonymsPhrase\"keyword\"Contains phrase in orderExact[keyword]Exact match only"
      },
      {
        "title": "Report Columns",
        "body": "Campaign Reports: CampaignName, Impressions, Clicks, Ctr, AverageCpc, Spend, Conversions, Revenue\n\nKeyword Reports: Keyword, AdGroupName, CampaignName, Impressions, Clicks, Ctr, AverageCpc, Spend, Conversions, QualityScore\n\nSearch Query Reports: SearchQuery, Keyword, CampaignName, Impressions, Clicks, Spend, Conversions\n\nGeographic Reports: Country, State, City, CampaignName, Impressions, Clicks, Spend, Conversions"
      },
      {
        "title": "Tips",
        "body": "Start paused - Campaigns are created paused by default. Review before activating.\nUse Phrase match - Good balance between reach and relevance for most keywords.\nMultiple headlines - RSAs need 3-15 headlines (30 chars each) and 2-4 descriptions (90 chars each).\nCheck search queries - Review actual search terms to find negative keywords.\nGeographic targeting - Use geo reports to optimize by location."
      },
      {
        "title": "Credits",
        "body": "MCP Server: github.com/Duartemartins/microsoft-ads-mcp-server\n\nBuilt with FastMCP and the Bing Ads Python SDK"
      }
    ],
    "body": "Microsoft Ads MCP Server\n\nCreate and manage Microsoft Advertising campaigns programmatically. This MCP server enables full campaign management for Bing and DuckDuckGo search ads.\n\nWhy Microsoft Advertising?\nDuckDuckGo Integration - Microsoft Advertising powers DDG search ads, reaching privacy-conscious users\nLower CPCs - Often 30-50% cheaper than Google Ads\nBing + Yahoo + AOL - Access to the full Microsoft Search Network\nImport from Google - Easy migration of existing campaigns\nSetup\n1. Install the MCP server\ngit clone https://github.com/Duartemartins/microsoft-ads-mcp-server.git\ncd microsoft-ads-mcp-server\npip install -r requirements.txt\n\n2. Get credentials\nMicrosoft Ads Account: Sign up at ads.microsoft.com\nDeveloper Token: Apply at developers.ads.microsoft.com\nAzure AD App: Create at portal.azure.com with redirect URI https://login.microsoftonline.com/common/oauth2/nativeclient\n3. Configure mcporter\n\nAdd to ~/.mcporter/mcporter.json:\n\n{\n  \"mcpServers\": {\n    \"microsoft-ads\": {\n      \"command\": \"python3\",\n      \"args\": [\"/path/to/microsoft-ads-mcp-server/server.py\"],\n      \"type\": \"stdio\",\n      \"env\": {\n        \"MICROSOFT_ADS_DEVELOPER_TOKEN\": \"your_token\",\n        \"MICROSOFT_ADS_CLIENT_ID\": \"your_azure_app_client_id\"\n      }\n    }\n  }\n}\n\n4. Authenticate\nmcporter call microsoft-ads.get_auth_url\n# Open URL in browser, sign in, copy redirect URL\nmcporter call microsoft-ads.complete_auth '{\"redirect_url\": \"https://login.microsoftonline.com/common/oauth2/nativeclient?code=...\"}'\n\nAvailable Tools\nAccount Management\nmcporter call microsoft-ads.search_accounts\n\nCampaign Operations\n# List campaigns\nmcporter call microsoft-ads.get_campaigns\n\n# Create campaign (starts paused for safety)\nmcporter call microsoft-ads.create_campaign '{\"name\": \"My Campaign\", \"daily_budget\": 20}'\n\n# Activate or pause\nmcporter call microsoft-ads.update_campaign_status '{\"campaign_id\": 123456, \"status\": \"Active\"}'\n\nAd Groups\n# List ad groups\nmcporter call microsoft-ads.get_ad_groups '{\"campaign_id\": 123456}'\n\n# Create ad group\nmcporter call microsoft-ads.create_ad_group '{\"campaign_id\": 123456, \"name\": \"Product Keywords\", \"cpc_bid\": 1.50}'\n\nKeywords\n# List keywords\nmcporter call microsoft-ads.get_keywords '{\"ad_group_id\": 789012}'\n\n# Add keywords (Broad, Phrase, or Exact match)\nmcporter call microsoft-ads.add_keywords '{\"ad_group_id\": 789012, \"keywords\": \"buy widgets, widget store\", \"match_type\": \"Phrase\", \"default_bid\": 1.25}'\n\nAds\n# List ads\nmcporter call microsoft-ads.get_ads '{\"ad_group_id\": 789012}'\n\n# Create Responsive Search Ad\nmcporter call microsoft-ads.create_responsive_search_ad '{\n  \"ad_group_id\": 789012,\n  \"final_url\": \"https://example.com/widgets\",\n  \"headlines\": \"Buy Widgets Online|Best Widget Store|Free Shipping\",\n  \"descriptions\": \"Shop our selection. Free shipping over $50.|Quality widgets at great prices.\"\n}'\n\nReporting\n# Submit report request\nmcporter call microsoft-ads.submit_campaign_performance_report '{\"date_range\": \"LastWeek\"}'\nmcporter call microsoft-ads.submit_keyword_performance_report '{\"date_range\": \"LastMonth\"}'\nmcporter call microsoft-ads.submit_search_query_report '{\"date_range\": \"LastWeek\"}'\nmcporter call microsoft-ads.submit_geographic_report '{\"date_range\": \"LastMonth\"}'\n\n# Check status and get download URL\nmcporter call microsoft-ads.poll_report_status\n\nOther\nmcporter call microsoft-ads.get_budgets\nmcporter call microsoft-ads.get_labels\n\nComplete Workflow Example\n# 1. Check account\nmcporter call microsoft-ads.search_accounts\n\n# 2. Create campaign\nmcporter call microsoft-ads.create_campaign '{\"name\": \"PopaDex - DDG Search\", \"daily_budget\": 15}'\n# Returns: Campaign ID 123456\n\n# 3. Create ad group\nmcporter call microsoft-ads.create_ad_group '{\"campaign_id\": 123456, \"name\": \"Privacy Keywords\", \"cpc_bid\": 0.75}'\n# Returns: Ad Group ID 789012\n\n# 4. Add keywords\nmcporter call microsoft-ads.add_keywords '{\n  \"ad_group_id\": 789012,\n  \"keywords\": \"privacy search engine, private browsing, anonymous search\",\n  \"match_type\": \"Phrase\",\n  \"default_bid\": 0.60\n}'\n\n# 5. Create ad\nmcporter call microsoft-ads.create_responsive_search_ad '{\n  \"ad_group_id\": 789012,\n  \"final_url\": \"https://popadex.com\",\n  \"headlines\": \"PopaDex Private Search|Search Without Tracking|Privacy-First Search Engine\",\n  \"descriptions\": \"Search the web without being tracked. No ads, no profiling.|Your searches stay private. Try PopaDex today.\"\n}'\n\n# 6. Activate campaign\nmcporter call microsoft-ads.update_campaign_status '{\"campaign_id\": 123456, \"status\": \"Active\"}'\n\n# 7. Check performance after a few days\nmcporter call microsoft-ads.submit_campaign_performance_report '{\"date_range\": \"LastWeek\"}'\nmcporter call microsoft-ads.poll_report_status\n\nMatch Types\nType\tSyntax\tTriggers\nBroad\tkeyword\tRelated searches, synonyms\nPhrase\t\"keyword\"\tContains phrase in order\nExact\t[keyword]\tExact match only\nReport Columns\n\nCampaign Reports: CampaignName, Impressions, Clicks, Ctr, AverageCpc, Spend, Conversions, Revenue\n\nKeyword Reports: Keyword, AdGroupName, CampaignName, Impressions, Clicks, Ctr, AverageCpc, Spend, Conversions, QualityScore\n\nSearch Query Reports: SearchQuery, Keyword, CampaignName, Impressions, Clicks, Spend, Conversions\n\nGeographic Reports: Country, State, City, CampaignName, Impressions, Clicks, Spend, Conversions\n\nTips\nStart paused - Campaigns are created paused by default. Review before activating.\nUse Phrase match - Good balance between reach and relevance for most keywords.\nMultiple headlines - RSAs need 3-15 headlines (30 chars each) and 2-4 descriptions (90 chars each).\nCheck search queries - Review actual search terms to find negative keywords.\nGeographic targeting - Use geo reports to optimize by location.\nCredits\n\nMCP Server: github.com/Duartemartins/microsoft-ads-mcp-server\n\nBuilt with FastMCP and the Bing Ads Python SDK"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Duartemartins/microsoft-ads-mcp",
    "publisherUrl": "https://clawhub.ai/Duartemartins/microsoft-ads-mcp",
    "owner": "Duartemartins",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/microsoft-ads-mcp",
    "downloadUrl": "https://openagent3.xyz/downloads/microsoft-ads-mcp",
    "agentUrl": "https://openagent3.xyz/skills/microsoft-ads-mcp/agent",
    "manifestUrl": "https://openagent3.xyz/skills/microsoft-ads-mcp/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/microsoft-ads-mcp/agent.md"
  }
}