Read live data
- Campaigns, ad groups, keywords and search terms
- Performance Max asset groups and Shopping products
- Spend, conversions, ROAS and CPA over any date range
- Period comparisons, such as this month against last
Connect once, use it two ways
Connect Google Ads to Jepto once. What you build in Jepto and what you ask in Claude or ChatGPT read the same data, so the numbers match wherever you look.
Add the Jepto MCP server and ask about Google Ads in plain English, across all your brands. Included on every plan. It can also pause or re-enable campaigns, after you confirm.
Jepto runs a hosted Google Ads MCP server at mcp.jepto.com. Connect it once and Claude, ChatGPT, Cursor or any MCP-compatible app can query 88 Google Ads fields across every account you manage, next to your other channels. There's nothing to install and no developer token to set up. It can also pause and re-enable campaigns, after you confirm.
Paste the URL into your AI assistant, or find Jepto in Claude's connector directory or ChatGPT's Plugins page. Sign in to Jepto once and every conversation can use your live Google Ads data.
Works with
OAuth sign-in. Each person sees only the brands their Jepto login can.
Your assistant shows a preview. Nothing saves until you confirm.
Every change shows a preview first and runs only after you confirm it in the chat.
Not in Jepto’s Google Ads data yet: Impression share, Quality Score, video view metrics and conversion action breakdowns.
Paste one into Claude or ChatGPT once Jepto is connected. Swap [brand] for one of yours.
“Which campaigns had the biggest jump in cost per conversion last week compared with the week before?”
“Show search terms with more than $100 spend and no conversions in the last 30 days, grouped by campaign.”
“Write a three-line summary of this month's Google Ads results for [brand]: spend, conversions and ROAS against last month.”
“Compare Google Ads clicks with GA4 sessions from google / cpc by day for the last 14 days and flag days that don't line up.”
“Which brands are projected to overspend their Google Ads budget this month?”
“Pause the campaigns in [brand]'s account that spent over $500 this month with no conversions.”
Google's own server is free and dependable for one account at a time. Jepto is the faster route when you manage many accounts and want them next to everything else.
| Compared on | Jepto MCP | Google's official Google Ads MCP | Community servers |
|---|---|---|---|
| Setup | Hosted. Paste one URL, or pick Jepto in the Claude or ChatGPT directory, then sign in. | Self-hosted Python server. Needs a Google Ads developer token and Google Cloud credentials. | You install, host and update it, and supply your own API credentials. |
| Accounts | Every Google Ads account you've connected, across all your brands, in one connection. | Accounts your Google login can reach. | Usually one login or token at a time. |
| Other channels | Ask across Google Ads and every other connected source in the same question. | Google Ads only. | One platform per server. You combine servers yourself. |
| Brand context | Reads each brand's details and knowledgebase, so answers reflect what the business sells and what it's aiming for. | None. | None. |
| Field guidance | Ships a Google Ads guide the AI reads first: which numbers add up, which don't, and what isn't available. | Raw Google Ads Query Language. The AI writes the queries. | Raw API fields. The AI works out what they mean. |
| Changes | Pauses and re-enables campaigns. You see a preview and confirm before anything changes. | Read-only. It can't pause campaigns or change bids. | Varies. Some write to your account with no confirm step. |
| Cost | Included on every Jepto plan, with no usage limits. | Free. You host it. | Free code. Your time to run and maintain it. |
Other MCP servers in Jepto
Every Google Ads metric and dimension in the Jepto data model, with its definition. Each one works the same way in Reports, Data Chat and the Jepto MCP.
| How you connect | Sign in with Google. You need read access to the Google Ads account or its manager account. |
| Levels | Account, campaign, ad group, keyword, search term, ad, asset, Performance Max asset group, Shopping product |
| Use it in | Reports, Data Chat, KPI forecasting, budget tracking, anomaly alerts and the Jepto MCP |
| AI assistants | Claude, ChatGPT, Cursor and any MCP client, at https://mcp.jepto.com |
| Changes from chat | Pause and re-enable campaigns, after you confirm |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
ClicksgoogleAds.clicks | Number of clicks on your ads during the reporting period. | Metric | number | Sum | — |
ImpressionsgoogleAds.impressions | Number of times your ads were shown, including repeat views by the same person. | Metric | number | Sum | — |
CostgoogleAds.spend | Total amount spent on your ads during the reporting period, in your account currency. | Metric | number | Sum | Currency |
CTRgoogleAds.ctr | Click-through rate: clicks divided by impressions, shown as a percentage. | Metric | number | Calculated: Clicks ÷ Impressions | Percentage |
CPMgoogleAds.cpm | Average cost per 1,000 impressions: spend divided by impressions (×1,000), in account currency. | Metric | number | Calculated: (Cost ÷ Impressions) × 1,000 | Currency |
CPCgoogleAds.cpc | Average cost per click: spend divided by clicks, in account currency. | Metric | number | Calculated: Cost ÷ Clicks | Currency |
Cost per conversion (CPA)googleAds.costPerConversion | Average spend for each conversion: spend divided by the number of conversion events. | Metric | number | Calculated: Cost ÷ Conversions | Currency |
Conversion valuegoogleAds.conversionValue | Total value attributed to conversion events (e.g. revenue from purchases) during the reporting period. | Metric | number | Sum | Currency |
ROASgoogleAds.roas | Return on ad spend for attributed revenue or value divided by spend. | Metric | number | Calculated: Conversion value ÷ Cost | Decimal (×) |
View-through conversionsgoogleAds.viewThroughConversions | Conversions recorded when a user saw (but did not click) your ad and later converted. | Metric | number | Sum | — |
ConversionsgoogleAds.conversions | Number of completed conversion actions you are measuring (e.g. purchases, sign-ups, leads). | Metric | number | Sum | — |
Conversion rategoogleAds.conversionRate | Percentage of clicks that resulted in a conversion: conversions ÷ clicks. | Metric | number | Calculated: Conversions ÷ Clicks | Percentage |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Account IDgoogleAds.customerId | Unique identifier for the Google Ads account (customer ID). | Dimension | number | — | — |
Account namegoogleAds.customerDescriptiveName | Name of the Google Ads account. | Dimension | string | — | — |
Account currencygoogleAds.customerCurrencyCode | Currency used by the Google Ads account. | Dimension | string | — | — |
Account time zonegoogleAds.customerTimeZone | Time zone configured for the Google Ads account. | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Asset group IDgoogleAds.assetGroupId | Unique identifier for the asset group in Google Ads. | Dimension | number | — | — |
Asset group namegoogleAds.assetGroupName | Name of the asset group within a Performance Max campaign. | Dimension | string | — | — |
Asset group statusgoogleAds.assetGroupStatus | Delivery status of the asset group (enabled, paused, or removed). | Dimension | string | — | — |
Listing group filter typegoogleAds.assetGroupListingGroupFilterType | Type of listing group filter applied to this asset group (e.g. Subdivision, Unit). | Dimension | string | — | — |
Performance Max placement namegoogleAds.performanceMaxPlacementDisplayName | Display name of the placement where your Performance Max ad appeared. | Dimension | string | — | — |
Performance Max placementgoogleAds.performanceMaxPlacement | URL or app where your Performance Max ad was shown. | Dimension | string | — | — |
Performance Max placement typegoogleAds.performanceMaxPlacementType | Type of placement for Performance Max (e.g. website, YouTube, app). | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Asset field typegoogleAds.adGroupAssetFieldType | Type of asset associated with the ad group (e.g. headline, image, description). | Dimension | string | — | — |
Asset statusgoogleAds.adGroupAssetStatus | Delivery status of the ad group asset (enabled, paused, or removed). | Dimension | string | — | — |
Asset IDgoogleAds.assetId | Unique identifier for the asset in Google Ads. | Dimension | number | — | — |
Asset namegoogleAds.assetName | Name of the asset (e.g. image, headline, video). | Dimension | string | — | — |
Asset typegoogleAds.assetType | Type of the asset (e.g. image, text, video, call to action). | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Campaign budget IDgoogleAds.campaignBudgetId | Unique identifier for the campaign budget in Google Ads. | Dimension | number | — | — |
Campaign budget namegoogleAds.campaignBudgetName | Name of the budget shared across campaigns. | Dimension | string | — | — |
Campaign daily budgetgoogleAds.campaignBudgetAmountMicros | Daily budget for the campaign, in the account's currency. | Dimension | number | — | — |
Campaign total budgetgoogleAds.campaignBudgetTotalAmountMicros | Total lifetime budget for the campaign, in the account's currency. | Dimension | number | — | — |
Campaign budget typegoogleAds.campaignBudgetType | The type of budget strategy used for the campaign (e.g., daily, shared). | Dimension | string | — | — |
Campaign budget periodgoogleAds.campaignBudgetPeriod | Time period the campaign budget covers (e.g. daily, monthly). | Dimension | string | — | — |
Shared budgetgoogleAds.campaignBudgetExplicitlyShared | Whether the budget is explicitly shared across multiple campaigns. | Dimension | boolean | — | — |
Bidding strategy IDgoogleAds.biddingStrategyId | Unique identifier for the campaign's bidding strategy in Google Ads. | Dimension | number | — | — |
Bidding strategy namegoogleAds.biddingStrategyName | Name of the bidding strategy applied to this campaign. | Dimension | string | — | — |
Bidding strategy typegoogleAds.biddingStrategyType | Type of bid strategy used (e.g. Target CPA, Maximize Conversions, Manual CPC). | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Campaign IDgoogleAds.campaignId | Unique identifier for the campaign. | Dimension | number | — | — |
CampaigngoogleAds.campaignName | Name of the ad campaign. | Dimension | string | — | — |
Campaign statusgoogleAds.campaignStatus | Current delivery status of the campaign (enabled, paused, or removed). | Dimension | string | — | — |
Campaign serving statusgoogleAds.campaignServingStatus | Serving status of the campaign indicating why it may not be delivering (e.g. ended, pending, serving). | Dimension | string | — | — |
Campaign typegoogleAds.advertisingChannelType | Campaign type that determines where ads can appear (e.g. Search, Display, Shopping, Video). | Dimension | string | — | — |
Campaign sub-typegoogleAds.advertisingChannelSubType | Sub-type of the campaign (e.g. Search Standard, Shopping Smart). | Dimension | string | — | — |
Campaign criterion IDgoogleAds.campaignCriterionId | Unique identifier for the campaign-level targeting criterion in Google Ads. | Dimension | number | — | — |
Campaign criterion typegoogleAds.campaignCriterionType | Type of targeting criterion applied at the campaign level (e.g. location, keyword). | Dimension | string | — | — |
Negative criteriongoogleAds.campaignCriterionNegative | Whether the criterion is excluded (negative targeting) at the campaign level. | Dimension | boolean | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Ad group IDgoogleAds.adGroupId | Unique identifier for the ad group. | Dimension | number | — | — |
Ad groupgoogleAds.adGroupName | Name of the ad group. | Dimension | string | — | — |
Ad group statusgoogleAds.adGroupStatus | Current delivery status of the ad group (enabled, paused, or removed). | Dimension | string | — | — |
Ad group typegoogleAds.adGroupType | Type of ad group (e.g. Standard, Dynamic Search Ads, Shopping). | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Keyword IDgoogleAds.keywordId | Unique identifier for the keyword in Google Ads. | Dimension | number | — | — |
KeywordgoogleAds.keywordText | The keyword phrase that triggered your ad. | Dimension | string | — | — |
Match typegoogleAds.keywordMatchType | How closely the keyword must match the user's search (Broad, Phrase, or Exact). | Dimension | string | — | — |
Keyword statusgoogleAds.keywordStatus | Current delivery status of the keyword (enabled, paused, or removed). | Dimension | string | — | — |
Negative keywordgoogleAds.keywordNegative | Whether the keyword is excluded as a negative keyword. | Dimension | boolean | — | — |
Display keywordgoogleAds.displayKeywordText | Keyword used to target Display Network placements. | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Merchant IDgoogleAds.merchantId | Unique identifier for the Google Merchant Center account. | Dimension | number | — | — |
Store codegoogleAds.storeCode | Store identifier for local inventory ad reporting. | Dimension | string | — | — |
Offer IDgoogleAds.offerId | Product offer ID from Google Merchant Center. | Dimension | string | — | — |
Product titlegoogleAds.productTitle | Title of the product as listed in Google Merchant Center. | Dimension | string | — | — |
Product brandgoogleAds.productBrand | Brand of the product as listed in Google Merchant Center. | Dimension | string | — | — |
Product category (L1)googleAds.productCategoryLevel1 | Top-level product category (e.g. Apparel, Electronics). | Dimension | string | — | — |
Product category (L2)googleAds.productCategoryLevel2 | Second-level product category breakdown (e.g. Shirts within Apparel). | Dimension | string | — | — |
Product type (L1)googleAds.productTypeL1 | Top-level custom product type label used for product segmentation. | Dimension | string | — | — |
Product type (L2)googleAds.productTypeL2 | Second-level custom product type label. | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
Ad networkgoogleAds.adNetworkType | Ad network where your ads were shown (e.g. Google Search, Display Network, YouTube). | Dimension | string | — | — |
Ad statusgoogleAds.adStatus | Current delivery status of the ad (enabled, paused, or removed). | Dimension | string | — | — |
Ad IDgoogleAds.adId | Unique identifier for the ad. | Dimension | number | — | — |
AdgoogleAds.adName | Name of the ad. | Dimension | string | — | — |
Ad typegoogleAds.adType | Format of the ad (e.g. Responsive Search Ad, Responsive Display Ad). | Dimension | string | — | — |
| Field | Description | Kind | Type | Aggregation | Format |
|---|---|---|---|---|---|
DategoogleAds.date | Date when the ad metrics were recorded. | Dimension | string | — | — |
Search termgoogleAds.searchTerm | The actual search query entered by a user that triggered your ad. | Dimension | string | — | — |
Search term statusgoogleAds.searchTermStatus | Whether the search term is included or excluded in your targeting. | Dimension | string | — | — |
Landing page URLgoogleAds.unexpandedFinalUrl | The destination URL for the landing page before any URL expansion by Google. | Dimension | string | — | — |
Age rangegoogleAds.ageRangeType | Age range of users targeted or who saw your ads (e.g. 18–24, 25–34). | Dimension | string | — | — |
GendergoogleAds.genderType | Gender of users targeted or who saw your ads. | Dimension | string | — | — |
Country criterion IDgoogleAds.countryCriterionId | Numeric code identifying the targeted country in Google Ads. | Dimension | number | — | — |
User location country IDgoogleAds.userLocationCountryCriterionId | Numeric code identifying the country where the user was physically located when the ad was shown. | Dimension | number | — | — |
DevicegoogleAds.device | Device type on which the ad was shown (mobile, desktop, tablet). | Dimension | string | — | — |
PlacementgoogleAds.detailPlacement | Specific website or app where your Display ad was shown. | Dimension | string | — | — |
Reports, budgets, forecasts and alerts all use the same Google Ads fields listed above.
Describe the report you want and Jepto builds it from your Google Ads data, then writes an analysis of what changed and why.
Explore reportingTrack Google Ads spend against a budget for each account or group of campaigns, and see mid-month whether you're on course to overspend.
Explore budget trackingSet a target on any Google Ads metric and see where the month is likely to finish, while there's still time to act.
Explore KPI forecastingAdd an anomaly alert to the Google Ads metrics you care about, and Jepto tells you when one moves outside its normal range.
Explore anomaly detectionYou sign in with Google. One manager account login can cover every Google Ads account under it.
In Jepto, add a Google Ads connection and sign in with a Google account that has at least read access to the Google Ads account, or to the manager account above it.
Select the Google Ads accounts you want to report on.
Your data is ready in Reports and Data Chat. Connect https://mcp.jepto.com to your AI assistant to ask about it from there too.
About Google Ads in Jepto and the Jepto MCP.
Yes. Jepto hosts an MCP server at https://mcp.jepto.com that gives Claude, ChatGPT, Cursor and other MCP-compatible apps access to your Google Ads data. There's nothing to install: you sign in to Jepto with OAuth, and the assistant can query every Google Ads field in the Jepto data model.
Yes. Google publishes an open-source Google Ads MCP server that is read-only and that you host yourself, with a Google Ads developer token. Jepto's server is hosted, needs no developer token, covers every account you've connected in one connection, and can pause and re-enable campaigns after you confirm.
Jepto includes Google Ads metrics such as Clicks, Impressions, Cost, CTR, CPM, CPC, Cost per conversion (CPA) and Conversion value. You can break them down by dimensions for Account, Asset group (Performance Max), Asset, Bidding & budget, Campaign, Ad group, Keyword, Shopping product, Ad & creative and Segments. Every field, with its definition, is listed on this page.
Only to pause and re-enable campaigns. The assistant shows you a preview first, and nothing changes until you confirm it in the chat. Everything else is read-only.
Impression share, Quality Score, video view metrics and conversion action breakdowns aren't in the Google Ads data model yet.
Yes. When both are connected to the same brand, any report or chart can use fields from either source, and Data Chat and the Jepto MCP can answer questions that span the two. Cross-platform fields such as unified.spend also add Google Ads to totals across your other ad platforms.
Yes. You can break Google Ads metrics down by Performance Max asset group, listing group filter type and placement, and by Shopping product title, brand, category, type and offer ID.
Jepto reads your data through the Google Ads API, so freshness and history follow the Google Ads API's own limits. Whatever the API makes available for your account, you can report on in Jepto.
Yes. Each Google Ads account counts as one data source. Every plan includes a set number of data sources, and you can add more without changing plan.
No. You connect Google Ads to Jepto by signing in, and Jepto handles the API access. Your AI assistant then connects to Jepto at https://mcp.jepto.com.
Yes. Every Google Ads account connected to Jepto, across all your brands, is available through the one connection. What each person can see follows their Jepto login.
No. The Jepto MCP is included on every plan with no usage limits. Check that your AI assistant's plan lets you add connectors.
Related Articles
Start asking your data smarter questions today. Connect your first data source in minutes.