Skip to main content
Glama

Server Details

Hosted MCP server for Google Ads and LinkedIn Ads analysis.

Ownership verified
Status
Unhealthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Addedlinkedin_get_creative_preview_asset
  2. 1 tool update
    • Addedlinkedin_render_account_health
  3. 3 tool updates
    • Changedlinkedin_compare_creative_performance5 fields changed
      • addedInput schema / properties / lookbackDays / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / lookbackDays / description
        Previous value: -"Performance-report style alias for a single trailing window size in days when windows is omitted. For example, lookbackDays: 30 is equivalent to windows: [30]."New value: +"Performance-report style alias for a single trailing window size in days when windows is omitted. For example, lookbackDays: 30, \"30d\", \"30 days\", or \"past 30 days\" is equivalent to windows: [30]."
      • removedInput schema / properties / lookbackDays / type
        Removed value: -"number"
      • addedInput schema / properties / windows / items / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / windows / items / type
        Removed value: -"number"
    • Addedlinkedin_record_creative_comparison_render_event
    • Changedlinkedin_render_creative_comparison5 fields changed
      • addedInput schema / properties / lookbackDays / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / lookbackDays / description
        Previous value: -"Performance-report style alias for a single trailing window size in days when windows is omitted. For example, lookbackDays: 30 is equivalent to windows: [30]."New value: +"Performance-report style alias for a single trailing window size in days when windows is omitted. For example, lookbackDays: 30, \"30d\", \"30 days\", or \"past 30 days\" is equivalent to windows: [30]."
      • removedInput schema / properties / lookbackDays / type
        Removed value: -"number"
      • addedInput schema / properties / windows / items / anyOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / windows / items / type
        Removed value: -"number"
  4. 1 tool update
    • Changedlinkedin_render_creative_comparison1 field changed
      • changedInput schema / properties / pageSize / description
        Previous value: -"MCP delivery page size for creative comparison rows when comparisonPayload is not supplied. Defaults to 50, max 200."New value: +"MCP delivery page size for raw creative rows when comparisonPayload is not supplied. Visual renders automatically request up to 200 rows for app hydration so the dashboard is not limited by model-supplied page sizes."
  5. 1 tool update
    • Addedlinkedin_get_creative_comparison_rows
  6. 1 tool update
    • Changedlinkedin_render_creative_comparison1 field changed
      • removedInput schema / oneOf
        Removed value: -[
        -  {
        -    "required": [
        -      "comparisonPayload"
        -    ]
        -  },
        -  {
        -    "not": {
        -      "anyOf": [
        -        {
        -          "required": [
        -            "campaignId"
        -          ]
        -        },
        -        {
        -          "required": [
        -            "campaignIds"
        -          ]
        -        }
        -      ]
        -    },
        -    "properties": {
        -      "scope": {
        -        "enum": [
        -          "account"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "scope",
        -      "accountId"
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "advertiserContextId"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "advertiserName"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "query"
        -        ]
        -      }
        -    ],
        -    "not": {
        -      "anyOf": [
        -        {
        -          "required": [
        -            "campaignId"
        -          ]
        -        },
        -        {
        -          "required": [
        -            "campaignIds"
        -          ]
        -        }
        -      ]
        -    }
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "campaignId"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "campaignIds"
        -        ]
        -      }
        -    ],
        -    "properties": {
        -      "scope": {
        -        "enum": [
        -          "campaign"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "scope"
        -    ]
        -  }
        -]
  7. 2 tool updates
    • Changedlinkedin_compare_creative_performance1 field changed
      • changedInput schema / properties / accountId / description
        Previous value: -"Numeric LinkedIn Ad Account ID. Required for account-wide creative comparisons. When used with campaignId or campaignIds, set scope to campaign so the account is treated only as the parent account."New value: +"Numeric LinkedIn Ad Account ID. If omitted for account-wide creative comparisons, advertiserName/query or the most recent LinkedIn account from session memory is used when available. When used with campaignId or campaignIds, set scope to campaign so the account is treated only as the parent account."
    • Changedlinkedin_render_creative_comparison2 fields changed
      • changedInput schema / properties / accountId / description
        Previous value: -"Numeric LinkedIn Ad Account ID. Required for account-wide creative reports. When used with campaignId or campaignIds, set scope to campaign so the account is treated only as the parent account."New value: +"Numeric LinkedIn Ad Account ID. If omitted for account-wide creative reports, advertiserName/query or the most recent LinkedIn account from session memory is used when available. When used with campaignId or campaignIds, set scope to campaign so the account is treated only as the parent account."
      • changedInput schema / properties / comparisonPayload / description
        Previous value: -"The structuredContent object returned by linkedin_compare_creative_performance."New value: +"The structuredContent object returned by linkedin_compare_creative_performance, or a wrapper object containing that payload such as a prior render result."
  8. 2 tool updates
    • Changedlinkedin_compare_creative_performance3 fields changed
      • addedInput schema / properties / advertiserContextId
        Added value: +{
        +  "description": "Optional saved advertiser context ID used to resolve the LinkedIn ad account for account-wide creative comparisons when accountId is not supplied.",
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserName
        Added value: +{
        +  "description": "Optional saved advertiser name, such as Thorogood, used to resolve the LinkedIn ad account for account-wide creative comparisons when accountId is not supplied.",
        +  "type": "string"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Optional advertiser or LinkedIn account search text used to resolve the account for account-wide creative comparisons when accountId is not supplied.",
        +  "type": "string"
        +}
    • Changedlinkedin_render_creative_comparison4 fields changed
      • changedInput schema / oneOf
        Previous value: -[
        -  {
        -    "required": [
        -      "comparisonPayload"
        -    ]
        -  },
        -  {
        -    "not": {
        -      "anyOf": [
        -        {
        -          "required": [
        -            "campaignId"
        -          ]
        -        },
        -        {
        -          "required": [
        -            "campaignIds"
        -          ]
        -        }
        -      ]
        -    },
        -    "properties": {
        -      "scope": {
        -        "enum": [
        -          "account"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "scope",
        -      "accountId"
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "campaignId"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "campaignIds"
        -        ]
        -      }
        -    ],
        -    "properties": {
        -      "scope": {
        -        "enum": [
        -          "campaign"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "scope"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "required": [
        +      "comparisonPayload"
        +    ]
        +  },
        +  {
        +    "not": {
        +      "anyOf": [
        +        {
        +          "required": [
        +            "campaignId"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "campaignIds"
        +          ]
        +        }
        +      ]
        +    },
        +    "properties": {
        +      "scope": {
        +        "enum": [
        +          "account"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "scope",
        +      "accountId"
        +    ]
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "advertiserContextId"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "advertiserName"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "query"
        +        ]
        +      }
        +    ],
        +    "not": {
        +      "anyOf": [
        +        {
        +          "required": [
        +            "campaignId"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "campaignIds"
        +          ]
        +        }
        +      ]
        +    }
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "campaignId"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "campaignIds"
        +        ]
        +      }
        +    ],
        +    "properties": {
        +      "scope": {
        +        "enum": [
        +          "campaign"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "scope"
        +    ]
        +  }
        +]
      • addedInput schema / properties / advertiserContextId
        Added value: +{
        +  "description": "Optional saved advertiser context ID used to resolve the LinkedIn ad account for account-wide visual creative reports when accountId is not supplied.",
        +  "type": "string"
        +}
      • addedInput schema / properties / advertiserName
        Added value: +{
        +  "description": "Optional saved advertiser name, such as Thorogood, used to resolve the LinkedIn ad account for account-wide visual creative reports when accountId is not supplied.",
        +  "type": "string"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Optional advertiser or LinkedIn account search text used to resolve the account for account-wide visual creative reports when accountId is not supplied.",
        +  "type": "string"
        +}
  9. 2 tool updates
    • Changedlinkedin_compare_creative_performance9 fields changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "endDate"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "dateRange"
        +    ]
        +  }
        +]
      • changedInput schema / properties / accountId / description
        Previous value: -"Optional numeric LinkedIn Ad Account ID. Pass this for a bounded multi-campaign creative comparison; accountId takes precedence over a lone campaignId."New value: +"Numeric LinkedIn Ad Account ID. Required for account-wide creative comparisons. When used with campaignId or campaignIds, set scope to campaign so the account is treated only as the parent account."
      • changedInput schema / properties / campaignId / description
        Previous value: -"Optional numeric LinkedIn campaign ID to analyze. If omitted, the most recent LinkedIn campaign from session memory is used when available. When accountId is also supplied, accountId takes precedence over a lone campaignId; use campaignIds for explicit campaign scope."New value: +"Numeric LinkedIn campaign ID to analyze. Required for single-campaign scope unless campaignIds is supplied."
      • changedInput schema / properties / campaignIds / description
        Previous value: -"Optional numeric LinkedIn campaign IDs to analyze together as one campaign set. Use this for cross-campaign creative comparison within the same account."New value: +"Optional numeric LinkedIn campaign IDs to analyze together as one campaign set. Use this for explicit cross-campaign creative comparison within the same account."
      • addedInput schema / properties / dateRange
        Added value: +{
        +  "description": "Optional date range alias. When endDate is omitted, dateRange.endDate, dateRange.end, or dateRange.to is used as the inclusive comparison end date.",
        +  "properties": {
        +    "end": {
        +      "type": "string"
        +    },
        +    "endDate": {
        +      "type": "string"
        +    },
        +    "to": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / lookbackDays
        Added value: +{
        +  "description": "Performance-report style alias for a single trailing window size in days when windows is omitted. For example, lookbackDays: 30 is equivalent to windows: [30].",
        +  "type": "number"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Explicit report scope. Use account with accountId only for account-wide creative comparisons. Use campaign with campaignId or campaignIds for one or more specific campaigns.",
        +  "enum": [
        +    "account",
        +    "campaign"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / windows / description
        Previous value: -"Trailing window sizes in days, such as [7, 30]. Defaults to [7, 30]."New value: +"Window sizes in days, such as [7] or [30]. Each window is compared with the previous same-length window. Defaults to [7, 30]."
      • removedInput schema / required
        Removed value: -[
        -  "endDate"
        -]
    • Changedlinkedin_render_creative_comparison8 fields changed
      • addedInput schema / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "comparisonPayload"
        +    ]
        +  },
        +  {
        +    "not": {
        +      "anyOf": [
        +        {
        +          "required": [
        +            "campaignId"
        +          ]
        +        },
        +        {
        +          "required": [
        +            "campaignIds"
        +          ]
        +        }
        +      ]
        +    },
        +    "properties": {
        +      "scope": {
        +        "enum": [
        +          "account"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "scope",
        +      "accountId"
        +    ]
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "campaignId"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "campaignIds"
        +        ]
        +      }
        +    ],
        +    "properties": {
        +      "scope": {
        +        "enum": [
        +          "campaign"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "scope"
        +    ]
        +  }
        +]
      • changedInput schema / properties / accountId / description
        Previous value: -"Optional numeric LinkedIn Ad Account ID. Pass this for a bounded multi-campaign creative report; accountId takes precedence over a lone campaignId on the visual renderer."New value: +"Numeric LinkedIn Ad Account ID. Required for account-wide creative reports. When used with campaignId or campaignIds, set scope to campaign so the account is treated only as the parent account."
      • changedInput schema / properties / campaignId / description
        Previous value: -"Optional campaign ID to compare when comparisonPayload is not supplied. For this visual renderer, accountId takes precedence over a lone campaignId so broad account-level prompts are not narrowed by stale session memory; use campaignIds for explicit campaign scope."New value: +"Campaign ID to compare when comparisonPayload is not supplied. Required for single-campaign scope unless campaignIds is supplied."
      • changedInput schema / properties / campaignIds / description
        Previous value: -"Optional numeric LinkedIn campaign IDs to compare as one campaign set when comparisonPayload is not supplied."New value: +"Optional numeric LinkedIn campaign IDs to compare as one campaign set when comparisonPayload is not supplied. Use only for explicit campaign-set scope."
      • addedInput schema / properties / dateRange
        Added value: +{
        +  "description": "Optional date range alias. When endDate is omitted, dateRange.endDate, dateRange.end, or dateRange.to is used as the inclusive comparison end date.",
        +  "properties": {
        +    "end": {
        +      "type": "string"
        +    },
        +    "endDate": {
        +      "type": "string"
        +    },
        +    "to": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / lookbackDays
        Added value: +{
        +  "description": "Performance-report style alias for a single trailing window size in days when windows is omitted. For example, lookbackDays: 30 is equivalent to windows: [30].",
        +  "type": "number"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "Explicit report scope when fetching fresh data. Use account with accountId only for account-wide creative reports. Use campaign with campaignId or campaignIds for one or more specific campaigns.",
        +  "enum": [
        +    "account",
        +    "campaign"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / windows / description
        Previous value: -"Trailing window sizes in days, such as [7, 30], when comparisonPayload is not supplied."New value: +"Window sizes in days, such as [7] or [30]. Each window is compared with the previous same-length window when comparisonPayload is not supplied."

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A hosted MCP server that enables managing Google Ads, Microsoft Advertising, TikTok Ads, LinkedIn Ads, and other Google services from ChatGPT, Claude, or any MCP client using natural language, with no code or API keys required.
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A private, read-only MCP server that enables retrieval and analysis of Google Ads reporting data (campaigns, ad groups, keywords, search terms, cost, conversions) from authorized accounts through a locally operated server.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Google Ads campaign reporting and management via Claude, enabling GAQL queries, performance metrics, and campaign modifications.
    18
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Cross-platform ad management MCP server for Google Ads and Meta Ads. Campaign analytics, A/B testing with z-test, anomaly detection, and budget reallocation. 15 tools, 60 tests.
    17
    85
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.9/5.0
Disambiguation4/5

Tools are clearly separated by platform prefix (linkedin_, google_ads_) and have distinct purposes (analyze, compare, render, get, etc.). Descriptions explicitly direct users to preferred rendering tools, reducing ambiguity. However, the high number of similar tools (e.g., multiple compare functions) may still cause minor confusion.

Naming Consistency5/5

Naming follows a consistent snake_case verb_noun pattern across all tools (e.g., linkedin_analyze_campaign, google_ads_render_weekly_group_report). No mixing of conventions, and verbs like get, render, analyze, compare are used uniformly.

Tool Count3/5

With 56 tools covering two major ad platforms plus setup and reporting, the count is high but reflects the complexity of the domain. However, many tools are redundant (e.g., multiple equivalent 'get' vs 'render' pairs), and the set could be streamlined without sacrificing capability.

Completeness4/5

The tool surface covers the full analysis and reporting lifecycle for both LinkedIn and Google Ads, including data retrieval, analysis, rendering, and account health. Missing are campaign creation/update tools, but these are outside the stated purpose. Minor gaps like lacking bulk operations or cross-platform comparison are acceptable.

Resources