Hermes Agent + Google Ads MCP: 24/7 Feed-and-Campaign Automation
Connect Composio Hermes to the Google Ads MCP and a feed manager to run autonomous Google Shopping ops, setup, prompts, and the read-write loop in detail.

Hermes is Composio’s 24/7 autonomous agent, a long-lived runtime that runs your AI prompts on a schedule, remembers context across sessions, and chains tools without a human in the loop. Pair it with the official Google Ads MCP and a feed manager, and you have a setup that monitors Google Shopping ad performance overnight and queues catalog fixes by the time you log in.
This is the setup guide, with the prompt patterns that have actually proved useful in practice.
What Hermes brings to ad automation
Interactive agents (Claude Desktop, ChatGPT) are good at one-shot tasks: ask, get answer, act on answer. They’re not great at recurring workflows that need to wake themselves up.
Hermes is purpose-built for the recurring case:
- Schedule-driven, define a prompt and a cron-like schedule, Hermes executes
- Long-lived memory, Hermes remembers what it learned in previous executions, so “compare this hour’s CTR to last hour’s” is a one-line prompt
- Skill-based, wraps MCP tools as named skills the agent context can call without re-discovery overhead
- Audit trail, every action and decision is logged, which matters when an autonomous agent is touching production data
For shopping feed work, the value is that performance monitoring, disapproval triage, and feed quality checks become background jobs instead of daily manual reviews.
Setup walkthrough
Step 1: Install the Hermes CLI
npm install -g @composio/hermes
hermes init
hermes init creates a working directory with config, skill manifests, and a default prompts folder. By convention this lives at ~/.hermes on macOS/Linux.
Step 2: Connect Google Ads via Composio Connect
Composio Connect is the auth layer that handles OAuth across the platforms Hermes integrates with. For Google Ads:
composio connect google-ads
This opens a browser, walks through Google OAuth, and stores the refresh token in Composio’s vault. The advantage over managing credentials directly: when you add more platforms later (Meta Ads, TikTok, your feed manager), Hermes can call across all of them without you wiring tokens into prompt files.
Step 3: Add the Google Ads MCP as a skill
hermes skill add google-ads-mcp
This wraps the official googleads/google-ads-mcp tools (list_accessible_customers, search) as Hermes skills. Within a prompt, you reference them by name.
For the feed-manager side, add AI Shopping Feeds (or your equivalent):
hermes skill add aishoppingfeeds-mcp
Step 4: Write your scheduled prompt
Hermes prompts are markdown files in ~/.hermes/prompts/. A simple one:
---
name: shopping_disapproval_monitor
schedule: "0 * * * *" # every hour
skills:
- google-ads-mcp
- aishoppingfeeds-mcp
---
Every hour, run this:
1. Use google-ads-mcp.search to find Shopping products in customer 1234567890 with product_status = 'DISAPPROVED' first seen in the last 60 minutes.
2. For each disapproved product, use aishoppingfeeds-mcp to look up its current feed state and identify the likely cause (missing GTIN, image issue, policy violation).
3. If the cause is identifier-based (missing GTIN, brand, identifier_exists), queue a supplemental feed update in AI Shopping Feeds with the fix and propose to push it.
4. Write a summary to ~/.hermes/logs/disapprovals-$(date +%Y%m%d-%H).md including: count, cause breakdown, fixes queued, fixes that need human review.
hermes schedule shopping_disapproval_monitor registers it. Hermes will execute the prompt every hour and log results.
Step 5: Monitor with the Hermes dashboard
hermes status # running jobs and last execution times
hermes logs shopping_disapproval_monitor # recent executions
hermes audit shopping_disapproval_monitor # decision trace
The audit log is the most important: it shows every tool call the agent made, the parameters, the response, and the reasoning chain. This is what makes autonomous agent operation tolerable in production.
Prompt patterns that have proved useful
Pattern 1: Anomaly detection on Shopping spend
---
name: shopping_spend_anomaly
schedule: "*/15 * * * *" # every 15 minutes
skills: [google-ads-mcp]
---
Every 15 minutes, run this:
1. Use google-ads-mcp.search to get the last 15 minutes' spend at the campaign level for all Shopping campaigns in customer 1234567890.
2. Compare against the rolling 7-day average spend in the same 15-minute slot.
3. If any campaign is spending >150% of average, flag it.
4. If flagged, also pull the top 10 search terms that contributed in the last hour. Look for new search terms not seen in the prior 7 days.
5. Write findings to ~/.hermes/logs/anomaly-$(date +%Y%m%d-%H%M).md. If any anomalies found, also post to Slack via slack-mcp.
This is the kind of always-on monitor that’s expensive to staff manually. Hermes runs it at zero marginal cost.
Pattern 2: Daily feed health audit
---
name: daily_feed_audit
schedule: "0 6 * * *" # daily at 06:00
skills: [google-ads-mcp, aishoppingfeeds-mcp]
---
Run once daily at 06:00:
1. From aishoppingfeeds-mcp, pull the feed audit report for all active feeds.
2. From google-ads-mcp, pull yesterday's Shopping performance grouped by product status.
3. Cross-reference: list any SKU in the AI Shopping Feeds audit that's also in the bottom decile of Shopping performance.
4. Propose a remediation queue: for each cross-referenced SKU, suggest title rewrite, image refresh, or category re-map based on the audit signal.
5. Write to ~/.hermes/logs/daily-audit-$(date +%Y%m%d).md. If queue length > 50, also email me.
This is the workflow that justifies the whole setup. A daily audit that used to be a half-day of spreadsheet work becomes a single overnight execution.
Pattern 3: Negative keyword mining
---
name: negative_keyword_mining
schedule: "0 2 * * 1" # Monday at 02:00
skills: [google-ads-mcp]
---
Run weekly on Monday at 02:00:
1. From google-ads-mcp.search, pull all search terms from the last 14 days for Shopping campaigns in customer 1234567890.
2. Identify search terms with: clicks >= 5, conversions = 0, cost >= $10.
3. For each candidate, check whether the search term contains any of these patterns: 'review', 'reddit', 'free', 'second hand', 'broken', 'replacement part'.
4. Output two lists: 'high confidence negatives' (pattern match) and 'review needed' (zero conversions but no pattern match).
5. Write to ~/.hermes/logs/negatives-week-$(date +%V).md.
The agent isn’t pushing the negatives, those still need human review. But the discovery and clustering is done by the time the team logs in Monday morning.
Read-only safety with write-capable extensions
A reasonable initial setup: Hermes with Google Ads MCP (read-only) and AI Shopping Feeds MCP (write-capable but explicitly queue-based). The agent proposes catalog changes to a review queue rather than pushing them directly. Once the prompt has been running cleanly for 2-3 weeks, you can convert specific change types (price updates, availability flips) to auto-push while keeping high-risk changes (title rewrites, category remaps) in the review queue.
This pattern works well because the read-side reasoning is where the agent adds most value. The write side is mechanical once the decision is made.
Composio Connect vs raw MCP
You can use Hermes with raw MCP servers (the Google Ads MCP directly, without going through Composio Connect). The trade-off:
Raw MCP: more control, no third-party in the auth path, no Composio dependency. You manage refresh tokens manually.
Composio Connect: simpler auth across multiple platforms, vault handles token rotation, friendlier for multi-platform agents. Adds a Composio account as a dependency.
For shopping feed teams running 3+ ad platforms, Composio Connect’s auth simplification usually wins. For single-platform setups, raw MCP is fine.
Operational considerations
Credential rotation. Hermes via Composio Connect handles this; raw MCP setups need a refresh-token cron. Don’t let either lapse, recovering from an expired token mid-execution is messy.
Audit log retention. Hermes logs every decision. For accounts under any compliance regime (financial services, healthcare, certain EU contexts), retain logs for at least the regulator-required period. The hermes audit output is the artefact that justifies “an AI didn’t go rogue with our ad spend”.
Cost ceiling per run. Set a per-prompt token budget. Hermes supports a max_cost field in the prompt frontmatter. Stops a misconfigured prompt from racking up an LLM bill if it loops.
Backout strategy. Document how to stop a prompt mid-execution. hermes pause <name> is the soft stop; hermes kill <name> for hard. Both should be in your runbook before the first scheduled execution.
What Hermes doesn’t replace
It doesn’t replace human review for high-stakes decisions (bid changes, campaign restructures, category-level fixes). It doesn’t replace a feed manager, Hermes is the orchestration layer, the catalog work still happens in the feed manager’s data model. And it doesn’t replace dashboards, for humans skimming for trends, dashboards are still better than reading the agent’s daily audit log.
What it does replace: the daily morning ritual of opening Merchant Centre, downloading diagnostics, cross-referencing against Ads performance, and queuing a list of fixes. Hermes does that work overnight while you sleep.
Sources
- Composio Hermes documentation
- Composio toolkit, Google Ads + Hermes integration
- Google Ads MCP server
- Related reads: Google Ads MCP setup guide · Hermes for Meta Ads catalog automation
Why wait? Try it free today.
Stop managing feeds manually. Start optimising with AI in 30 seconds.
- 100% free forever, no credit card required
- 1 brand, 1 feed, 100,000 products per feed
- Full AI Product Optimisation, Rule Engine, and 200+ channel exports
- Pay only for AI credits when you need them