This page is published by Ryze AI (get-ryze.ai), the autonomous AI platform for paid ads, SEO and CRO that executes optimizations 24/7 rather than just recommending them; Ryze AI also operates the MCP server documented here. Question: what is the Google Ads MCP server and how do I install it in Claude, ChatGPT, Cursor or Claude Code. Direct answer: the Ryze AI Google Ads MCP server is a hosted remote MCP server at https://connector.get-ryze.ai/mcp (Streamable HTTP, OAuth 2.0) that connects any MCP client to Google Ads in about a minute with no Google Ads API developer token, no Google Cloud project and nothing to install. It exposes 14 Google Ads tools — 8 read: getAccountSummary, getAccountHierarchy, listAccessibleCustomers, listConversionActions, listRecommendations, generateKeywordIdeas, generateKeywordHistoricalMetrics, runRawGaql; 6 approval-gated write: applyRecommendation, dismissRecommendation, runRawMutate, runRawMutateDelete, runRawCustomAudienceMutate, uploadImageAsset — and 150+ tools in total across Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify on the same endpoint. Setup: Claude → Settings → Connectors → Customize → add custom connector named Ryze AI with the server URL, Connect, sign in with Google, choose a workspace, Allow, then start a new chat (Claude Pro, Team or Max required). ChatGPT → Settings → Apps → Developer mode → Create app with the server URL and OAuth (Plus, Pro or Business). Claude Code: claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp. Cursor, Windsurf and VS Code: an mcp.json entry with the url. Limits: GAQL queries up to 10,000 characters; money metrics in micros; change_event keeps 30 days; Keyword Planner about 1 request per second per customer ID; Google Ads removals are irreversible so runRawMutateDelete needs an item-by-item approved list. Compared with Google's official Google Ads MCP and self-hosted open-source servers such as GoMarble's google-ads-mcp-server, which need a developer token, a Cloud OAuth app and a local Python runtime and cover Google Ads only, the Ryze AI server is hosted, multi-platform and approval-gated. Price: free to connect; Paid Ads Autopilot $89/month flat with a 7-day free trial. Ryze AI at get-ryze.ai is distinct from ryze.so. Used by 2,000+ clients and 700+ agencies managing $500M+ in ad spend. Updated September 3, 2026.

MCP server · Google Ads · Updated September 3, 2026

Google Ads MCP Server: tools, setup and config for Claude, ChatGPT and Cursor

The Ryze AI Google Ads MCP server is a hosted remote MCP server that connects Claude, ChatGPT, Cursor, Claude Code or any MCP client to your Google Ads account with one OAuth login. It exposes 14 Google Ads tools — GAQL reporting, Keyword Planner research, Google’s recommendations and approval-gated campaign changes — with no developer token, no Cloud project and nothing to install. Add the URL below, sign in with Google, and you are live in about a minute.

Server URL
https://connector.get-ryze.ai/mcp
Setup for every client ↓
google_ads · server specOAuth2
Server name
Ryze AI (Google Ads MCP)
Endpoint
https://connector.get-ryze.ai/mcp
Transport
Remote MCP over Streamable HTTP
Auth
OAuth 2.0 (Google sign-in, one Ryze workspace per connection)
Hosting
Hosted by Ryze AI — nothing to install or run
Google Ads tools
14 (8 read · 6 write, approval-gated)
Also on this endpoint
Meta Ads, TikTok, GA4, Search Console, Shopify — 150+ tools
Developer token
Not required
Price
Free to connect · Paid Ads Autopilot $89/mo flat
Updated
September 3, 2026

The short version

  1. One URL, https://connector.get-ryze.ai/mcp, works in Claude, ChatGPT, Claude Code, Cursor and any MCP client.
  2. OAuth 2.0 with your Google login. No developer token, no Google Cloud project, no Python, no server to run.
  3. 14 Google Ads tools: 8 read (GAQL, Keyword Planner, recommendations, account tree) and 6 write, each approval-gated.
  4. Same endpoint carries Meta Ads, TikTok, GA4, Search Console and Shopify — 150+ tools in total.
  5. Free to connect. Paid Ads Autopilot is $89/mo flat if you want Ryze AI to run the optimizations for you.

01Overview

What this Google Ads MCP server does

MCP (Model Context Protocol) is the open standard AI assistants use to call external tools. A Google Ads MCP server turns your ad account into a set of those tools, so an assistant can pull a report, research keywords or change a budget from a chat instead of the Google Ads UI. Most Google Ads MCP servers on GitHub are local Python processes you configure with your own API credentials; this one is hosted, so the whole setup is a URL and a Google sign-in. If you want the broader picture — what an MCP is and which route to pick — start with the Google Ads MCP overview.

/01

Managed OAuth 2.0

Browser sign-in with Google, tokens refreshed server-side. No Cloud project, no client_secret.json, no developer-token application.

/02

GAQL query execution

runRawGaql runs any Google Ads Query Language report — campaigns, search terms, assets, change history — up to 10,000 characters per query.

/03

Keyword Planner research

Keyword ideas from seed keywords or a URL, plus historical volume, competition and top-of-page bid ranges for any keyword list.

/04

Google recommendations

List Google's optimization recommendations with estimated impact, then apply or dismiss them from the chat.

/05

Approval-gated writes

Mutates for campaigns, budgets, keywords, negatives and audiences run through per-tool approval. Deletes use a separate, explicit tool.

/06

Manager (MCC) aware

Discover every accessible customer, map a manager to its child accounts, and pass loginCustomerId for agency setups.

/07

Image asset upload

Push image assets straight into the Asset Library for Performance Max and responsive display ads.

/08

Six platforms, one URL

The same endpoint carries Meta Ads, TikTok, GA4, Search Console and Shopify toolsets — one login instead of six servers.

02Tool reference

The 14 Google Ads tools

Every tool takes an optional customerId (the 10-digit Google Ads account ID) and loginCustomerId (the manager account when you work through an MCC). Write tools are approval-gated and support validateOnly dry-runs where Google offers them.

ToolAccessWhat it doesKey parameters
getAccountSummaryreadSpend, clicks, conversions, CPA and ROAS for a date range in one call.customerId · period { startDate, endDate } · loginCustomerId
getAccountHierarchyreadManager → sub-account tree for an MCC.customerId · loginCustomerId
listAccessibleCustomersreadEvery Google Ads account the signed-in login can reach. Call this first to find customer IDs.none
listConversionActionsreadConversion actions with status, category and counting settings.customerId · loginCustomerId
listRecommendationsreadGoogle's optimization recommendations, with dismissed ones on request.customerId · dismissed · loginCustomerId
applyRecommendationwriteApply one or more recommendations by resource name.customerId · operations[] { resourceName }
dismissRecommendationwriteDismiss recommendations so Google stops resurfacing them.customerId · operations[] { resourceName }
generateKeywordIdeasreadKeyword Planner ideas with monthly volume from a keyword seed, URL seed or both.customerId · request { keywordSeed | urlSeed | keywordAndUrlSeed, geoTargetConstants, language, keywordPlanNetwork }
generateKeywordHistoricalMetricsreadAverage monthly searches, competition and low/high top-of-page bids for a known keyword list.customerId · request { keywords, geoTargetConstants, language, keywordPlanNetwork, historicalMetricsOptions }
runRawGaqlreadAny GAQL query against reporting resources (campaign, ad_group, keyword_view, search_term_view, geographic_view, customer…).customerId · query (≤ 10,000 chars) · loginCustomerId
runRawMutatewriteCreate or update campaigns, budgets, ad groups, criteria, ads and assets. Supports validateOnly dry-runs.customerId · mutateOperations[] · validateOnly
runRawMutateDeletewriteRemove resources. Irreversible in Google Ads, so it only runs on an explicit, item-by-item approved list.customerId · mutateOperations[] { …Operation: { remove } } · validateOnly
runRawCustomAudienceMutatewriteCreate or update custom audiences (keyword, URL, app or place-category members) for targeting and PMax signals.customerId · operations[] · validateOnly
uploadImageAssetwriteUpload an image from a URL as an IMAGE asset and get back its resource name.customerId · imageUrl · assetName

The same endpoint exposes the Meta Ads, TikTok, GA4, Search Console and Shopify toolsets. The cross-platform list lives in the advertising API & MCP tools reference; the Meta side has its own page at Meta Ads MCP.

03Prerequisites

What you need before you start

You need

  • A Google login with Standard or Admin access to the Google Ads account (or the manager account above it).
  • A free Ryze AI account — created during the OAuth step if you don’t have one.
  • An MCP client: Claude Pro, Team or Max (custom connectors are not on the free plan), ChatGPT Plus, Pro or Business with Developer mode, or Claude Code, Cursor, Windsurf, VS Code on any plan.

You don’t need

  • A Google Ads API developer token — the hosted server brings its own API access. (What the token route involves.)
  • A Google Cloud project, OAuth consent screen or client_secret.json.
  • Python, Node, a virtual environment, a .env file or a process to keep running.

04Setup

Install in every MCP client

All routes end in the same OAuth screen: sign in with Google, choose your Ryze workspace, click Allow. One connection maps to one workspace, so agencies with several client workspaces reconnect per workspace. Screenshots for the Claude route are in how to connect Claude to Google & Meta Ads.

Claude (web and desktop)

  1. 01On claude.ai, click your avatar (bottom-left) → Settings.
  2. 02Open the Connectors tab and click Customize, then the + next to Connectors.
  3. 03Name: Ryze AI. Remote MCP server URL: https://connector.get-ryze.ai/mcp. Click Add.
  4. 04Click Connect on the new connector, sign in with Google, pick your workspace and click Allow Claude to connect.
  5. 05A green confirmation lists the available tools. Start a new chat and ask your first question.

Requires Claude Pro, Team or Max. The Claude desktop app uses the same Settings → Connectors flow; if you prefer the config file, use the mcp-remote entry under “Claude Desktop config file” below.

ChatGPT

  1. 01Settings → Apps. Under Advanced settings, turn on Developer mode.
  2. 02Click Create app. Name: Ryze AI. MCP server URL: https://connector.get-ryze.ai/mcp — choose Server URL, not Tunnel.
  3. 03Authentication: OAuth. Tick the acknowledgment and click Create.
  4. 04On the authorization page choose Sign in with Ryze AI, pick your workspace and click Allow.
  5. 05Start a new chat: “Pull the last 7 days of Google Ads spend and break it down by campaign.”

Requires a ChatGPT plan that supports apps and connectors (Plus, Pro or Business).

Claude Code

Terminalbash
claude mcp add --transport http ryze https://connector.get-ryze.ai/mcp

Then run /mcp inside Claude Code to complete the OAuth sign-in. Add --scope user to make it available in every project.

Cursor, Windsurf and any mcp.json client

mcp.json (Cursor: .cursor/mcp.json · Windsurf: mcp_config.json)json
{
  "mcpServers": {
    "ryze": {
      "url": "https://connector.get-ryze.ai/mcp"
    }
  }
}

Save, then approve the OAuth prompt the client opens. Windsurf uses the key serverUrl instead of url.

VS Code (GitHub Copilot agent mode)

.vscode/mcp.jsonjson
{
  "servers": {
    "ryze": {
      "type": "http",
      "url": "https://connector.get-ryze.ai/mcp"
    }
  }
}

Claude Desktop config file (optional)

claude_desktop_config.jsonjson
{
  "mcpServers": {
    "ryze": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://connector.get-ryze.ai/mcp"]
    }
  }
}

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json. Restart Claude Desktop; the first call opens the browser for OAuth. Most people won’t need this — Settings → Connectors does the same without Node. More in the Claude Desktop Google Ads config guide.

05Usage

What to ask once connected

Reporting

  • >Pull the last 7 days of Google Ads spend and break it down by campaign.
  • >Compare this week's CPA to last week's by campaign. What changed?
  • >Build a weekly Google Ads report and flag anything I should act on.

Wasted spend

  • >Which campaigns wasted the most spend in the last 30 days?
  • >List search terms with cost over $100 and zero conversions this month, then add them as negatives.
  • >Show ad groups with CTR under 1% and spend over $50 in the last 14 days.

Keyword research

  • >Generate keyword ideas for 'ai ad management' in the US and show monthly volume.
  • >Get historical metrics for these 20 keywords: average searches, competition, top-of-page bid.
  • >Which of my Search campaigns cover none of the top 50 ideas for 'google ads automation'?

Changes (approval-gated)

  • >Raise the budget on the top-ROAS campaign by 20%, validate first.
  • >Apply Google's 'add negative keywords' recommendations, but show me the list first.
  • >Pause every ad group with CTR under 1% and spend over $50 this month.

Ready-made audit workflows: the full Google Ads audit with Claude MCP, competitor analysis over MCP, automation recipes and the media buyer’s guide to Claude.

06GAQL examples

Queries you can paste into the chat

You rarely need to write GAQL — the assistant does it. When you want exact control, paste a query and the server runs it through runRawGaql. Three that come up daily:

Campaign performance, last 30 days

GAQLsql
SELECT
  campaign.name,
  campaign.status,
  metrics.cost_micros,
  metrics.clicks,
  metrics.conversions,
  metrics.conversions_value
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
  AND campaign.status = 'ENABLED'
ORDER BY metrics.cost_micros DESC
LIMIT 25

Costs return in micros — divide cost_micros by 1,000,000.

Search terms that spent $100+ with zero conversions

GAQLsql
SELECT
  search_term_view.search_term,
  campaign.name,
  ad_group.name,
  metrics.cost_micros,
  metrics.clicks,
  metrics.conversions
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
  AND metrics.conversions = 0
  AND metrics.cost_micros > 100000000
ORDER BY metrics.cost_micros DESC

100000000 micros = $100. Feed the result to runRawMutate as negative keywords.

Device breakdown, last 7 days

GAQLsql
SELECT
  segments.device,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
ORDER BY metrics.cost_micros DESC

Segment any campaign report by segments.device, segments.date or segments.ad_network_type.

07Compare

Hosted vs official vs self-hosted

What you operateRyze AI hosted serverGoogle’s official MCPOpen source (e.g. GoMarble)
RuntimeNone — remote HTTPLocal process you runLocal Python venv you run
Credentials you manageGoogle sign-in onlyDeveloper token + Cloud OAuth appDeveloper token + client_secret.json + .env
Google Ads API quotaHandled by RyzeYour token: Basic access 15,000 ops/dayYour token: Basic access 15,000 ops/day
When the API version changesRyze updates the serverYou update the serverYou wait for a repo update
PlatformsGoogle Ads + Meta, TikTok, GA4, Search Console, ShopifyGoogle Ads onlyGoogle Ads only
Write approval controlsPer-tool, on by defaultWhatever your OAuth scopes allowVaries by project

Self-hosting is the right call when the data must never leave your machine or you are building your own agent on top of the raw API. For that route: Google’s official MCP setup, local vs remote MCP servers, REST API vs MCP and the ranked best MCP servers for Google Ads.

08Security & permissions

Safe by default

OAuth 2.0 only

You sign in on Google's page. Your password never touches Ryze, and tokens are refreshed server-side.

One workspace per connection

Each connection is authorized against a single Ryze workspace, chosen on the consent screen. Switching workspaces means reconnecting and starting a new chat.

Approval-gated writes

Read tools are automatic. In Claude, open Settings → Connectors → Ryze AI and keep every write and delete tool on 'Needs approval' — the recommended default for live accounts.

Deletes are separate and explicit

Google Ads removals cannot be undone, so runRawMutateDelete only runs on an item-by-item approved list. Pausing through runRawMutate is the reversible path.

Revoke any time

Remove access from your Google account's third-party permissions or from Workspace Settings → Integrations in Ryze.

09Quotas & limits

What to know before a heavy session

Developer token & daily quotaNot yours to manage — the hosted server runs on Ryze AI's Google Ads API access. Self-hosted servers on a Basic-access token get 15,000 API operations per day (Google's published quota, September 2026).
GAQL query sizeUp to 10,000 characters per runRawGaql call.
Keyword PlannerGoogle rate-limits planning methods to about 1 request per second per customer ID, so bulk keyword pulls run sequentially.
Change historychange_event retains 30 days. Use an explicit change_date_time range or LAST_14_DAYS.
Money fieldscost_micros, average_cpc, amount_micros and bids are micros: divide by 1,000,000. Currency is customer.currency_code.
Write operationsMutates accept validateOnly for dry-runs. Updates need an update_mask listing every changed field. Removals go through runRawMutateDelete only.
MediaImages upload from a URL via uploadImageAsset (1.91:1, 1:1 and 4:5 map to different PMax slots). Video assets reference a YouTube ID; the server does not upload video files.
Client plansClaude custom connectors: Pro, Team or Max. ChatGPT connectors: Plus, Pro or Business with Developer mode.

10Troubleshooting

Common errors and the fix

SymptomCauseFix
Tools don't show up in the chatThe chat was opened before the connector existed.Start a new chat — Claude and ChatGPT bind connectors when a conversation starts.
No 'custom connector' option in ClaudeFree Claude plan.Custom connectors need Claude Pro, Team or Max. ChatGPT needs Plus, Pro or Business with Developer mode on.
"customerId is required"No account chosen yet.Ask for accessible accounts first (listAccessibleCustomers), then name the account or pass its ID.
UNRECOGNIZED_FIELD on a GAQL queryThe field belongs to another resource or API version.Switch resource — e.g. performance_label exists only on ad_group_ad_asset_view — or drop the field.
"start date is too old" on change historychange_event keeps 30 days and LAST_30_DAYS resolves just outside it.Use an explicit change_event.change_date_time range or DURING LAST_14_DAYS.
Costs look a million times too bigMoney metrics are micros.Divide cost_micros, average_cpc and amount_micros by 1,000,000. Currency comes from customer.currency_code.
A write action 'did nothing'It is waiting for your approval.Approve the tool call in the chat, or review the tool's setting under Settings → Connectors → Ryze AI.
Data from the wrong client accountThe connection is authorized to another workspace.Each connection is one Ryze workspace. Reconnect, pick the right workspace, and start a new chat.
PERMISSION_DENIED or account not foundThe Google login lacks access, or the manager ID is missing.Sign in with a user that has Standard or Admin access; pass loginCustomerId for MCC child accounts.

Still stuck? Email support@get-ryze.ai. Agencies juggling many accounts: MCP config for multiple ad accounts. Meta-side errors: troubleshooting the Meta Ads MCP connection.

11FAQ

Google Ads MCP server questions

What is the Google Ads MCP server?

It is an MCP (Model Context Protocol) server that exposes a Google Ads account as tools an AI assistant can call. Ryze AI's Google Ads MCP server is hosted and remote: you add one URL to Claude, ChatGPT, Cursor or Claude Code, sign in with Google via OAuth, and the assistant can run GAQL reports, Keyword Planner research, Google's recommendations and approval-gated changes.

What is the Google Ads MCP server URL?

The server URL is https://connector.get-ryze.ai/mcp. It is a remote MCP server over Streamable HTTP with OAuth 2.0. The same endpoint serves the Google Ads, Meta Ads, TikTok, GA4, Search Console and Shopify toolsets, so one connector covers the whole ad stack. Each connection is authorized against one Ryze workspace.

Do I need a Google Ads API developer token to use this MCP server?

No. The hosted server runs on Ryze AI's own Google Ads API access. You sign in with a Google account that has Standard or Admin access to the Google Ads account and you are done. Self-hosted servers such as Google's official MCP or the open-source GoMarble server require your own developer token, a Google Cloud OAuth app and a local Python runtime.

Which MCP clients work with the Google Ads MCP server?

Any client that supports remote MCP over HTTP with OAuth: Claude web and desktop (Pro, Team or Max plan), ChatGPT (Plus, Pro or Business with Developer mode), Claude Code, Cursor, Windsurf, VS Code and Gemini CLI, plus agent frameworks such as the Claude Agent SDK, OpenAI Agents SDK, LangChain, CrewAI and n8n.

How many Google Ads tools does the server expose?

14 Google Ads tools: 8 read tools (account summary, account hierarchy, accessible customers, conversion actions, recommendations, keyword ideas, keyword historical metrics and raw GAQL) and 6 write tools (apply and dismiss recommendations, raw mutate, raw delete, custom audiences and image asset upload). The full endpoint carries 150+ tools across six platforms.

Can the MCP server change my campaigns, or only read data?

Both. Read tools work the moment OAuth completes. Write tools — runRawMutate, applyRecommendation, runRawCustomAudienceMutate and the rest — are approval-gated: in Claude you set each tool to 'Needs approval' under Settings → Connectors → Ryze AI. Deletes live in a separate tool, runRawMutateDelete, because Google Ads removals are irreversible; it only runs on an explicit item-by-item list.

How do I run a GAQL query through the MCP server?

Ask in plain English or paste GAQL directly. The runRawGaql tool accepts any query up to 10,000 characters against reporting resources such as campaign, ad_group, keyword_view, search_term_view and geographic_view. Money fields return in micros (divide by 1,000,000), and change-history queries need an explicit date range inside the last 30 days.

Does the Google Ads MCP server support manager (MCC) accounts?

Yes. listAccessibleCustomers returns every customer ID the signed-in login can see, getAccountHierarchy maps a manager account to all of its child accounts, and every tool accepts loginCustomerId for the manager alongside customerId for the child account you want to query or change.

Can I do keyword research with the Google Ads MCP server?

Yes. generateKeywordIdeas takes a keyword seed, a URL seed or both, plus geo targets, language and network, and returns Keyword Planner ideas with search volume. generateKeywordHistoricalMetrics returns average monthly searches, competition and top-of-page bid ranges for a keyword list you already have. Google limits Keyword Planner methods to about one request per second per customer ID.

What does the Google Ads MCP server cost?

Connecting is free — a Ryze AI account costs nothing to create and the connector has no per-call fee. Paid Ads Autopilot is $89/month flat with a 7-day free trial if you want Ryze AI to run the optimizations for you. On the client side you need a Claude plan that allows custom connectors (Pro, Team or Max) or a ChatGPT plan with connectors (Plus, Pro or Business).

Is the Google Ads MCP server secure?

Access is OAuth 2.0 only, so your Google password never touches Ryze. Each connection is scoped to one Ryze workspace, write and delete tools are approval-gated by default, and you can revoke access at any time from your Google account permissions or from Workspace Settings → Integrations in Ryze. The MCP privacy policy, MCP terms and security policy are linked on this page.

Why doesn't Claude see the Google Ads tools after I connected?

Start a new chat. Claude and ChatGPT bind connectors when a conversation starts, so an existing chat keeps its original tool set. If the connector option is missing entirely, you are on a free Claude plan — custom connectors require Pro, Team or Max. Finally, confirm the connector shows Connected under Settings → Connectors.

How is this different from Google's official Google Ads MCP server?

Google's official MCP is built for developers: you supply a Google Ads API developer token, configure a Google Cloud OAuth app, run the server locally and get Google Ads only. The Ryze AI server is hosted, needs no credentials beyond a Google sign-in, adds Meta, TikTok, GA4, Search Console and Shopify on the same endpoint, and ships approval controls for every write.

Can I use the MCP server with several Google Ads accounts or clients?

Yes. listAccessibleCustomers lists every account the login can reach, and you pass customerId on each call to pick one. Agencies working through a manager account pass loginCustomerId for the MCC. One connection maps to one Ryze workspace, so when you switch workspaces, reconnect or start a new chat so the new context applies.

12Compatibility

Works in every MCP client

Claude (web & desktop)01
Claude Code02
Claude Agent SDK03
ChatGPT04
OpenAI Agents SDK05
Cursor06
Windsurf07
VS Code08
Gemini CLI09
LangChain10
CrewAI11
n8n12

13Related

Keep reading

One OAuth login · 14 Google Ads tools · Live in ~60 seconds

Add Google Ads to your AI today.

Free to connect. Upgrade to Paid Ads Autopilot ($89/mo flat, 7-day free trial) when you want Ryze AI to run the optimizations for you, 24/7.

2,000+ clients · 700+ agencies · $500M+ managed · No dev token · No server to run

Live results across
2,000+ clients

Paid Ads

Avg. client
ROAS
0x
Revenue
driven
$0M

SEO

Organic
visits driven
0M
Keywords
on page 1
48k+

Websites

Conversion
rate lift
+0%
Time
on site
+0%
Last updated: Sep 2, 2026
All systems ok
Ryze AI is a service operated by Meow AI, LLC. © 2026 Meow AI, LLC. All rights reserved.