| Same job, different reach |
| Steps before your first question | 3: connect GA4 in Porter, paste the URL, sign in with Google | Python 3.10+ and pipx, a Cloud project with the Admin and Data APIs, Application Default Credentials, then a local config |
| Credential files on your computer | None | Application Default Credentials (or a service-account key) |
| Tools | Read, write and remove actions for reports, key events, custom definitions, audiences, streams, links and users | 9 read tools, such as run_report and run_realtime_report, plus create_property_annotation with --allow-write |
| Where it runs | Hosted by Porter | On your machine, through pipx |
| Changes to GA4 | Key events, custom dimensions and metrics, audiences, streams, Google Ads links, user access | Property annotations only, behind an --allow-write flag |
| Approval controls | Every change shown first and approved | Read-only by default |
| Clients in its docs | Claude, ChatGPT, Gemini, n8n, any remote MCP client | Antigravity, Claude Desktop, Claude Code |
| Price | Included in every Porter plan, the free plan too | Open source |
| Only one side |
| Search Console and other channels | 30+ sources: Search Console, Google Ads, Meta Ads, HubSpot and more | GA4 only |
| Cross-channel in one conversation | Yes | Not in its docs |
| Blending sources into one number | Yes | Not in its docs |
| Live dashboards at their own link | Yes | Not in its docs |
| Scheduled reports and alerts | Yes | Not in its docs |
| Attribution to CRM revenue | Yes | Not in its docs |
| Data Studio, Sheets, BigQuery | Yes | MCP clients only |
| Skills: whole tasks already written | Yes | You write the prompt |