<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ryze AI]]></title><description><![CDATA[Ryze AI]]></description><link>https://ryzeai.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 31 Oct 2026 16:14:04 GMT</lastBuildDate><atom:link href="https://ryzeai.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[What the Meta Ads MCP server actually exposes, and what it doesn't]]></title><description><![CDATA[When Meta shipped an official MCP server for Meta Ads earlier this year, the announcement posts mostly said "Claude can now manage your Facebook ads." That…]]></description><link>https://ryzeai.hashnode.dev/what-the-meta-ads-mcp-server-actually-exposes-and-what-it-doesn-t</link><guid isPermaLink="true">https://ryzeai.hashnode.dev/what-the-meta-ads-mcp-server-actually-exposes-and-what-it-doesn-t</guid><category><![CDATA[mcp]]></category><category><![CDATA[Facebook Ads]]></category><category><![CDATA[claude]]></category><dc:creator><![CDATA[Michael Martinez]]></dc:creator><pubDate>Wed, 14 Oct 2026 09:38:30 GMT</pubDate><content:encoded><![CDATA[<p>When Meta shipped an official MCP server for Meta Ads earlier this year, the announcement posts mostly said "Claude can now manage your Facebook ads." That is true and also not very useful to an engineer deciding whether to build on it. I wanted the boring answers: what tools, what auth, what rate limits, what it refuses to do, and where you still need your own code.</p>
<p>I have not reverse-engineered the server. What follows is assembled from two write-ups Ryze published on the launch (the second is a tool-by-tool breakdown), with the places where they disagree called out, because they do disagree on a couple of details and you should check Meta's own documentation before you depend on either. Every number is cited to the page it came from.</p>
<h2>The shape of the thing</h2>
<p>Per Ryze's breakdown, Meta's server was released in public beta on 29 April 2026 and exposed 29 core tools at launch, grouped roughly into campaign management, performance insights, audience tools and creative management (source: <a href="https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install">https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install</a>). The same page maps those categories onto the Marketing API endpoints the server calls behind them:</p>
<table>
<thead>
<tr>
<th>Tool category</th>
<th>Example functions</th>
<th>Endpoints called</th>
</tr>
</thead>
<tbody><tr>
<td>Campaign management</td>
<td>create, edit, pause, delete</td>
<td><code>/campaigns</code>, <code>/adsets</code>, <code>/ads</code></td>
</tr>
<tr>
<td>Performance insights</td>
<td>pull metrics, compare periods</td>
<td><code>/insights</code>, <code>/delivery_check</code></td>
</tr>
<tr>
<td>Audience tools</td>
<td>lookalikes, custom audiences</td>
<td><code>/customaudiences</code>, <code>/saved_audiences</code></td>
</tr>
<tr>
<td>Creative management</td>
<td>upload images, manage library</td>
<td><code>/adcreatives</code>, <code>/adimages</code></td>
</tr>
</tbody></table>
<p>(Table from <a href="https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install">https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install</a>.)</p>
<p>The important architectural point is that the AI client never touches the Marketing API directly. The MCP server receives a tool call, constructs the Graph API request, executes it and returns a formatted response. Your Claude or ChatGPT session holds no Meta token.</p>
<p>Meta ships this in two flavors, and the Ryze launch post is clear about who each is for: an HTTP MCP server you point Claude Desktop or ChatGPT at, and a CLI binary for Claude Code and Codex users. Same Marketing API underneath; the launch post estimates about 10 minutes for the MCP route and about 15 minutes for the CLI route (npm install, env vars, auth) (source: <a href="https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch">https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch</a>).</p>
<h2>Auth: this is the real feature</h2>
<p>The thing that changes the economics is not the tool list; it is that you do not need a Meta Developer App. Authentication is Meta Business OAuth, the same login flow Shopify and Mailchimp use. The launch post's framing: no Developer App, no Marketing API approval wait, querying live campaigns within minutes instead of the old 1 to 3 day wait (source: <a href="https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch">https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch</a>).</p>
<p>Per the breakdown page, the OAuth screen asks for permissions covering campaigns, ad sets, ads, insights, audiences and catalogs; the token is stored server-side by Meta and refreshed automatically. If auth succeeds but data calls fail with "insufficient permissions", the fix it gives is re-authenticating with all requested scopes granted (<code>ads_read</code>, <code>ads_management</code>, <code>business_management</code>, <code>pages_read_engagement</code>) and confirming your Business role is Admin or Advertiser, not Analyst (source: <a href="https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install">https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install</a>).</p>
<h2>Where the two write-ups disagree</h2>
<p>Read both pages side by side and you hit three inconsistencies. I am listing them rather than picking a winner, because I could only verify what the pages say, not what Meta's server does today.</p>
<ol>
<li><strong>Endpoint.</strong> The launch post's Claude Desktop config uses <code>https://mcp.meta.com/ads/&lt;your-business-id&gt;</code> under <code>mcpServers</code> (source: <a href="https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch">https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch</a>). The breakdown page says the server is hosted at <code>mcp.ads.meta.com</code> and shows an <code>npx -y @meta/ads-mcp</code> stdio config with empty <code>META_ACCESS_TOKEN</code>, <code>META_APP_ID</code> and <code>META_APP_SECRET</code> env vars (source: <a href="https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install">https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install</a>). A remote URL and a local npx package are different transports. Check Meta's setup docs, which the launch post cites at facebook.com/business/help/1456422242197840.</li>
<li><strong>Setup time.</strong> 10 minutes on the launch post, "under 5 minutes" on the breakdown page. Both put most of the time in finding <code>claude_desktop_config.json</code>.</li>
<li><strong>Which Claude.</strong> The breakdown page says MCP requires Claude Desktop and a Pro subscription, and that the web version does not support MCP servers. That was written in May 2026; treat it as a dated claim and test against the client you actually use.</li>
</ol>
<p>The config edit itself is the step that bites. The launch post's troubleshooting is practical: a red indicator almost always means a JSON syntax error (trailing comma, missing brace); closing the Claude window is not quitting, you need a full Cmd-Q and reopen; and if the first prompt errors it is read access, not the prompt (source: <a href="https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch">https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch</a>).</p>
<h2>What it does</h2>
<p>Once connected, the capability that matters most versus the third-party servers that came before is write access, including campaign creation. The breakdown page's claim: full read/write access to the Marketing API, with everything created in <code>PAUSED</code> status by default so you review before launch (source: <a href="https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install">https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install</a>). The example prompts it lists give a feel for the surface:</p>
<ul>
<li>Pull campaigns with spend over $1,000 this month, CTR under 1% and CPA over $50.</li>
<li>Create a conversion campaign with a $200 daily budget, CBO on, three ad sets, in PAUSED status.</li>
<li>Build a 1% lookalike from top-20% purchasers in the last 90 days and check overlap against existing audiences.</li>
<li>Pause campaigns with ROAS under 2.0x and raise budgets 20% on campaigns above 4.0x, showing the plan before executing.</li>
<li>Flag ads with CTR down more than 30% over 7 days, frequency over 3.0, or CPM up more than 40%.</li>
</ul>
<p>Those are prompts, not tool names; the model composes them from the 29 tools.</p>
<h2>What it doesn't do</h2>
<p><strong>No agent layer.</strong> The server exposes operations. It does not run them on a schedule, watch for fatigue, or pause anything on its own. The launch post states this directly: Meta's official MCP tells you ad sets are fatigued, it does not pause them (source: <a href="https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch">https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch</a>). If you want overnight automation you wire your own cron job, alerting and pause logic on top, or you use a hosted product that does. Ryze is one of those and publishes its own comparison on the launch page; I work with them, so read that comparison knowing they sell the alternative.</p>
<p><strong>No multi-account auto-discovery and no per-client token isolation.</strong> Both pages describe account switching as manual and the launch post calls the lack of token isolation "a hard fail for regulated agency work" (source: <a href="https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch">https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch</a>). If you manage many Business Managers, that is your integration work.</p>
<p><strong>Not everyone is enabled.</strong> The breakdown page says access is gated by an <code>is_ads_mcp_enabled</code> flag on the Business account and that roughly 40% of accounts still showed <code>false</code> as of May 2026, with Meta prioritizing high-spend accounts and typical wait times of 2 to 4 weeks (source: <a href="https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install">https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install</a>). The symptom is an install that looks fine followed by an "Account not enabled for MCP access" error at auth. Check the flag before you debug your config.</p>
<p><strong>Personal accounts are out.</strong> A Facebook Business account with Admin or Advertiser access is required, regardless of personal ad-spend history (same source).</p>
<p><strong>Rate limits are the Marketing API's.</strong> The breakdown page quotes 200 calls per user per hour and 4,800 per app per hour, enforced at the MCP server, with the server batching and caching repeat requests. The practical advice is to batch questions into single prompts and wait 15 to 20 minutes if you trip the limit (source: <a href="https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install">https://www.get-ryze.ai/blog/meta-official-mcp-what-it-does-and-how-to-install</a>). If you are building anything that polls, budget for this.</p>
<p><strong>Pricing is open-beta pricing.</strong> Free today, but the launch post notes Meta has not committed to long-term pricing and the free tag is beta-specific (source: <a href="https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch">https://www.get-ryze.ai/blog/meta-ads-official-mcp-cli-launch</a>). The breakdown page adds that the third-party servers it replaced charged $25 to $99 a month, which is a useful anchor for what a post-beta price might look like.</p>
<h2>A decision rule</h2>
<p>The launch post's two-persona split is roughly right. If you are a developer with one or two accounts, comfortable editing JSON, and you will wire your own automation, the official server is free raw Marketing API access with an OAuth flow that finally skips app review. Use it. If you need scheduled actions, many Business Managers, or token isolation per client, the official server is the data layer and you are building (or buying) the rest.</p>
<p>Either way, do the first week read-only. Confirm Claude's tables match Ads Manager for the same date range and attribution window before any tool call with <code>pause</code> or <code>budget</code> in it runs unattended.</p>
<p><em>Originally published on dev.to: <a href="https://dev.to/ryzeai/what-the-meta-ads-mcp-server-actually-exposes-and-what-it-doesnt-3aem">https://dev.to/ryzeai/what-the-meta-ads-mcp-server-actually-exposes-and-what-it-doesnt-3aem</a></em></p>
]]></content:encoded></item><item><title><![CDATA[Using Claude skills to run Google and Meta ads from the terminal]]></title><description><![CDATA[If you run ad accounts and live in a terminal, the repetitive part of that work (CPA diagnostics, wasted-spend audits, the Monday anomaly check) can be…]]></description><link>https://ryzeai.hashnode.dev/using-claude-skills-to-run-google-and-meta-ads-from-the-terminal</link><guid isPermaLink="true">https://ryzeai.hashnode.dev/using-claude-skills-to-run-google-and-meta-ads-from-the-terminal</guid><category><![CDATA[claude]]></category><category><![CDATA[google ads]]></category><category><![CDATA[marketing]]></category><dc:creator><![CDATA[Michael Martinez]]></dc:creator><pubDate>Wed, 14 Oct 2026 09:12:09 GMT</pubDate><content:encoded><![CDATA[<p>If you run ad accounts and live in a terminal, the repetitive part of that work (CPA diagnostics, wasted-spend audits, the Monday anomaly check) can be moved into Claude Code using plain Markdown skill files. This is a write-up of what the setup looks like, where it helps, and where the limits are. Every number and feature name below comes from two sources: Ryze's guide to the skill library and the GitHub repo it points at. Disclosure up front: I work with the Ryze team.</p>
<h2>What a "skill" is, mechanically</h2>
<p>A Claude skill is a folder containing a <code>SKILL.md</code> file. The file opens with a YAML frontmatter block (a <code>name</code> and a <code>description</code>), followed by Markdown instructions. Claude keeps every skill's description in view and loads the full body only when a request matches it. That is the whole mechanism; there is no fine-tuning and no app to install in your ad account.</p>
<p>Claude Code discovers skills in two places: <code>~/.claude/skills/</code> for skills you want everywhere, and <code>.claude/skills/</code> inside a project for team-shared, version-controlled ones (source: <a href="https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads">https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads</a>).</p>
<p>The distinction that trips most people up is skills versus MCP. The Ryze guide puts it as: a prompt is instructions, a skill is instructions with a save button, an MCP connector is data access. A skill cannot see your account by itself. You either paste CSV exports or pair the skill with an MCP server that wraps the Google Ads API or Meta Marketing API.</p>
<h2>The library</h2>
<p>The open-source repo is <code>github.com/irinabuht12-oss/marketing-skills</code>. The Ryze blog post describes 30 ad skills: 21 that run on both Google Ads and Meta Ads, 5 Google-only (Bid Strategy Recommendations, Quality Score Breakdown, Keyword Cannibalization Check, Ad Extension Audit, Search Query Intent Classifier), and 4 Meta-only (Audience Overlap Analysis, Competitor Creative Analysis, Frequency Cap Recommendations, Retargeting Window Analysis) (source: <a href="https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads">https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads</a>).</p>
<p>One thing to know before you clone: the repo has outgrown the blog post. As of 13 October 2026 the README says 49 skills across four folders (Google Ads, Meta Ads, SEO, AI visibility), MIT licensed, and the GitHub API reported 4,421 stars (source: <a href="https://github.com/irinabuht12-oss/marketing-skills">https://github.com/irinabuht12-oss/marketing-skills</a>). The ad skills described in the blog post are still there; the extra ones cover SEO and AI visibility.</p>
<h2>Install</h2>
<p>Two routes. The one the repo README recommends is the Claude Code plugin marketplace:</p>
<pre><code class="language-bash">claude plugin marketplace add irinabuht12-oss/marketing-skills
claude plugin install marketing-skills@ryze
</code></pre>
<p>The manual route, useful if you want to read the files before loading them:</p>
<pre><code class="language-bash">git clone https://github.com/irinabuht12-oss/marketing-skills
cp -r marketing-skills/skills/* ~/.claude/skills/
</code></pre>
<p>(Both snippets from the repo README: <a href="https://github.com/irinabuht12-oss/marketing-skills">https://github.com/irinabuht12-oss/marketing-skills</a>.)</p>
<p>If you copy skills by hand from the older per-platform folders, remember the convention is one folder per skill with the file saved as <code>SKILL.md</code> inside it. The Ryze guide shows the pattern:</p>
<pre><code class="language-bash">mkdir -p ~/.claude/skills/wasted-spend-finder
cp marketing-skills/&lt;skill-file&gt;.md ~/.claude/skills/wasted-spend-finder/SKILL.md
</code></pre>
<h2>What a skill file looks like</h2>
<p>Here is the trimmed wasted-spend skill as the Ryze guide prints it, because the shape matters more than any single skill:</p>
<pre><code class="language-markdown">---
name: wasted-spend-finder
description: Audits Google or Meta Ads data for spend with
 zero conversions. Use when asked to find wasted spend,
 budget leaks, or to build exclusion / negative lists.
---
# Wasted Spend Finder
## Inputs
Search terms, placements, audiences, and ads with spend +
conversions columns. Last 90 days. CSV export or MCP pull.
## Steps
1. Isolate every row with spend &gt; 0 and conversions = 0.
2. Ignore rows below $10 total spend (noise).
3. Group the rest by theme: irrelevant intent, wrong geo,
 broad-match drift, display placement junk, dead ads.
4. Attach the dollar total to each group.
## Output
Summary table (theme, spend, % of total waste) first.
Then a negative keyword list and an exclusion list,
formatted ready to upload. No commentary in the lists.
</code></pre>
<p>Four parts: inputs, steps, thresholds (numbers, not adjectives), output format. The guide's advice: spend more editing time on the <code>description</code> line than on anything else, because it is the index entry routing runs on. A vague description ("helps with ads") produces a skill that never fires.</p>
<h2>Getting live data in</h2>
<p>Without MCP, every skill run starts with ten minutes in the Google Ads or Ads Manager UI picking columns and date ranges. The Ryze guide lists two ways to remove that step:</p>
<ol>
<li><strong>Build your own MCP server</strong> against the Google Ads API and Meta Marketing API. The guide estimates 30 to 60 minutes and notes it is read-only in practice because the open-source servers wrap the read endpoints. You need a Google Ads developer token, an OAuth client, and account or MCC access; on the Meta side a Meta app with <code>ads_read</code> and a system-user token (source: <a href="https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads">https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads</a>).</li>
<li><strong>Use a hosted connector.</strong> The repo README gives the Ryze one as a single command:</li>
</ol>
<pre><code class="language-bash">claude mcp add ryze --transport http https://connector.get-ryze.ai/mcp
</code></pre>
<p>The README says the connector itself is free and gives Claude live Google Ads, Meta Ads, GA4 and Search Console data; the blog post says write access (pausing ads, adjusting budgets, adding negatives) is part of the paid Ryze plan, from $89/month with a free trial (sources: <a href="https://github.com/irinabuht12-oss/marketing-skills">https://github.com/irinabuht12-oss/marketing-skills</a> and <a href="https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads">https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads</a>). As noted above I work with the Ryze team, so weigh that accordingly and read the connector's permissions page before you authorize anything.</p>
<p>Whichever route you take, one rule from the guide worth putting in bold: never paste API keys, developer tokens, or OAuth secrets into a chat. Credentials belong in the MCP server config.</p>
<h2>What running it actually looks like</h2>
<p>The interface is a one-line prompt. The guide's example:</p>
<pre><code>Run the wasted spend finder on my Google Ads account,
last 90 days. Write the negative keyword list to
negatives-2026-07.csv and the summary to waste-report.md.
</code></pre>
<p>The reason the terminal beats claude.ai for this is that outputs land as files. Exclusion lists, report drafts and budget models end up in a folder you can <code>git diff</code>, rather than chat text you copy out. The second reason is chaining. In one Claude Code session the anomaly detector's findings become the CPA diagnostic's starting point without re-explaining anything. The guide's morning-run prompt shows the pattern:</p>
<pre><code>Morning run for [client]:
1. Anomaly check vs the trailing 14-day average.
2. For anything flagged, run the CPA diagnostic on
   that campaign.
3. Append findings to reports/[client]/log.md and
   draft the one-paragraph Slack update.
Stop before suggesting changes — read-only today.
</code></pre>
<p>The six skills the guide says do most of the work, with the cadence it suggests: CPA Diagnostics (whenever CPA moves more than 15%), Wasted Spend Finder (monthly), Budget Scenario Planner (before every budget conversation), Creative Fatigue Detection (weekly, Meta), Client Report Narratives (reporting week), Anomaly Detection (daily). The guide estimates the total time cost once the setup exists at roughly an hour a week, most of it reading outputs (source: <a href="https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads">https://www.get-ryze.ai/blog/marketing-claude-skills-google-meta-ads</a>).</p>
<h2>Where it breaks</h2>
<p>The guide lists six failure modes; these four are the common ones:</p>
<ul>
<li><strong>Claude ignores the skill.</strong> Routing. Name the skill explicitly and tighten the "use when" line.</li>
<li><strong>Output is generic.</strong> Claude got the method but no numbers. Attach the export or connect MCP, and state the date range and target CPA.</li>
<li><strong>Numbers don't match the platform UI.</strong> Attribution window, conversion action set and timezone shift totals. State them in the prompt.</li>
<li><strong>A metric looks invented.</strong> Add "use only the supplied data; if something is missing, say so instead of estimating" to the skill.</li>
</ul>
<p>The habit the guide recommends for all of these: ask Claude which skill it used and what data it actually received.</p>
<h2>If you are starting today</h2>
<p>Start read-only. Every skill in the library is written to analyze and recommend, not to touch the account, so a wrong conclusion costs a raised eyebrow, not a paused campaign. Pick one skill, run it on this week's real numbers with a pasted export, add MCP when the export step becomes the bottleneck, and add write access last, if ever, with an approval step in front of each change.</p>
<p>And commit the <code>.claude/skills/</code> folder to the client repo. Thresholds in a Markdown file that go through pull-request review are a better audit trail than anyone's notes app.</p>
<p><em>Originally published on dev.to: <a href="https://dev.to/ryzeai/using-claude-skills-to-run-google-and-meta-ads-from-the-terminal-409k">https://dev.to/ryzeai/using-claude-skills-to-run-google-and-meta-ads-from-the-terminal-409k</a></em></p>
]]></content:encoded></item></channel></rss>