Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Google E-commerce (GA4, Search Console, Merchant Center)

PYPI · GOOGLE-ECOMMERCE-MCP

Read-only GA4, Search Console, Merchant Center, Tag Manager, Indexing and PageSpeed for shops.

+3 this week 85 Trust /100

Last scanned (8 hours ago)

Scores higher than 89% of PyPI servers

Category Marketing and SEO

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 4 of 52 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to MoonEyes/google-ecommerce-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 0 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4572 tokens (~207/item across 22 items; 22 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management40
  • Stability observed for 12 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 22 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 16 Oct 26 −2
    • Stability: 0.37 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Schema quality: 120 → 207 ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Package version: 0.3.1 → 0.4.0 functional
  • 15 Oct 26 +16
    • Malware scan: unverified → pass ▲ security
  • 14 Oct 26 +21
    • Malware scan: pass → unverified ▼ security
    • Injection markers: unverified → pass ▲ security
    • Schema quality: pass → fail ▼ functional
    • Tool coverage: unverified → 100 ▲ functional
    • Stability: unverified → 0.33 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
  • 13 Oct 26 +26
    • Malware scan: unverified → pass ▲ security
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.96 ▲ functional
  • 12 Oct 26 −58
    • Malware scan: pass → unverified ▼ security
    • Known CVEs: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Dependency health: 0.96 → unverified ▼ functional
    • First check of Schema quality: unverified functional
    • Package version: 0.2.0 → 0.3.1 functional
  • 4 Oct 26 82

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 16 Oct 2026 · Analysed pypi/google-ecommerce-mcp@0.4.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo MoonEyes/google-ecommerce-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/MoonEyes/google-ecommerce-mcp/.github/workflows/release.yml@refs/tags/v0.4.0
Rekor log index 3283884262
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:61a4036fc8850ce8bf35f3c1f774713d6c94ffda1a1ca5c8e23ad8ba4449501f

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 52 packages
Packages resolved 52
Stale 4
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 22 exposed · ~4,334 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
ads_overview ~175

Google Ads, Meta and OpenAI Ads totals side by side for one period: spend, impressions, clicks, conversions and conversion value as reported by each platform, the platform's own ROAS, currency, attribution windows and date range. A platform not configured or failing gets its own block without blocking the others (partial). combined adds spends only when every currency is the same (else null with combined_reason; a platform without activity adds zeros and needs no currency) and computes ROAS as total value / total spend. Conversions overlap between platforms: their sum is not deduplicated (warning).

NameTypeReqDescription
end_datestringyesLast day, YYYY-MM-DD, on or after start_date
start_datestringyesFirst day, YYYY-MM-DD (each platform counts in its own account timezone)

No output schema declared.

No examples provided.

ga4_properties ~112

GA4 accounts and properties the authorized Google account can read (Admin API accountSummaries), so the assistant can find a property id itself and pass it as property_id to ga4_report or ga4_realtime. Returns {"properties": [{property_id, property_name, property_type, account_id, account_name, configured}], "configured_property_id"}. Needs the Google Analytics Admin API enabled; no extra OAuth scope.

NameTypeReqDescription
max_pagesinteger–Pages of 200 accounts to read at most

No output schema declared.

No examples provided.

ga4_realtime ~142

GA4 realtime report for the last 30 minutes. Useful to check a tracking change, for example that one page view is counted once and not twice. Returns {"rows": [...], "row_count": n, "totals": {...}, "metrics": {...}}.

NameTypeReqDescription
dimensionsarray–GA4 realtime dimensions, e.g. unifiedScreenName, country, deviceCategory
metricsarray–GA4 realtime metrics, e.g. activeUsers, screenPageViews, eventCount
property_idstring–Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID

No output schema declared.

No examples provided.

ga4_report ~300

Run a Google Analytics 4 report (Data API runReport): traffic, conversions or revenue split by any dimensions over a date range. Returns the top rows ({"rows": [{dimension: value, metric: number}]}), "totals" over every row, "row_count" and "truncated", the unit and definition of each metric under "metrics", the currency, and a "date_range" resolved to calendar dates in the property's timezone with "data_complete". Use ga4_realtime for the last 30 minutes.

NameTypeReqDescription
channel_groupstring–Optional exact filter on sessionDefaultChannelGroup, e.g. 'Organic Search'; empty for all channels
dimensionsarray–GA4 API dimension names, e.g. sessionDefaultChannelGroup, landingPage, sessionSource, yearMonth, itemName
end_datestring–YYYY-MM-DD, NdaysAgo, yesterday or today
limitinteger–Maximum rows returned (1 to 1000); totals always cover every row
metricsarray–GA4 API metric names, e.g. sessions, totalUsers, ecommercePurchases, purchaseRevenue, keyEvents
property_idstring–Numeric GA4 property id, as listed by ga4_properties; empty uses the configured GA4_PROPERTY_ID
start_datestring–YYYY-MM-DD, NdaysAgo, yesterday or today

No output schema declared.

No examples provided.

gads_accounts ~98

Google Ads customer accounts the Google Ads token can read directly (customers:listAccessibleCustomers), with the configured GADS_CUSTOMER_ID and GADS_LOGIN_CUSTOMER_ID (manager account), to pick a customer_id for gads_performance or gads_query. Returns {"customers": [{"id"}], "configured_customer_id", "login_customer_id", "cached"} (cached: true when the list comes from the 5-minute discovery cache).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gads_performance ~297

Google Ads performance by account, campaign or ad group over a date range: spend, impressions, clicks, conversions, conversion value, CTR, CPC, CPA and ROAS, optionally split by date, device or network. Built from fixed aggregated GAQL templates (searchStream), highest spend first. Returns "rows", "totals" (ROAS = sum of values / sum of spends) with "totals_complete". start_date and end_date are required (empty -> invalid_dates), the "currency" (looked up when no row), a "date_range" in the account timezone with "data_complete", the unit and definition of each metric, and the "attribution" used.

NameTypeReqDescription
customer_idstring–Google Ads customer id (digits, dashes allowed), as listed by gads_accounts; empty uses the configured GADS_CUSTOMER_ID
end_datestring–Required: last day, YYYY-MM-DD (account timezone)
levelstring–Row level: account, campaign or ad_group
limitinteger–Maximum rows returned (1 to 1000), highest spend first; totals cover up to 10,000 rows (see totals_complete)
segmentstring–Optional split of each row: none, date, device or network
start_datestring–Required: first day, YYYY-MM-DD (account timezone)

No output schema declared.

No examples provided.

gads_query ~560

Run a free read-only Google Ads Query Language (GAQL) SELECT on one customer (searchStream), for fields the fixed gads_performance templates do not cover. Refused without any network call unless it is a single SELECT with no ';' and no '--' or '/*' (refused even inside a string literal). The read is bounded: without LIMIT, LIMIT 10001 is added (before PARAMETERS); a larger LIMIT is lowered to 10001; the answer is capped at 20 MB. One SELECT and one FROM only, no JOIN, no backslash, ASCII only outside string literals. FROM and every dotted name prefix in SELECT, WHERE and ORDER BY (besides metrics and segments) must be a reporting resource: customer, campaign, campaign_budget, ad_group, ad_group_ad, ad_group_criterion, keyword_view, shopping_performance_view, product_group_view, asset_group, asset_group_listing_group_filter, asset_group_asset, asset, ad_group_ad_asset_view, campaign_criterion, geographic_view, gender_view, age_range_view, landing_page_view, expanded_landing_page_view, display_keyword_view, topic_view, bidding_strategy, conversion_action, location_view, distance_view, with customer.* limited to id, descriptive_name, currency_code, time_zone, status, manager, test_account and resource_name; anything else is refused with resource_not_allowed. Names exposing personal data (change_event, click_view, call_view, search term views, leads, user_*, payments_*, billing_*, customer_user_access, invoices, account links, placements...) are refused anywhere in the query with sensitive_resource. Setting GADS_ALLOW_SENSITIVE_QUERIES=1 in the server env lifts both lists (personal data possible). Rows are flattened to GAQL field names (campaign.name, metrics.clicks); micros fields are converted to currency units: *_micros renamed without the suffix (metrics.cost_micros -> metrics.cost), metrics.average_cpc, average_cpm, average_cost and cost_per_* kept under their name.

NameTypeReqDescription
customer_idstring–Google Ads customer id (digits, dashes allowed), as listed by gads_accounts; empty uses the configured GADS_CUSTOMER_ID
gaqlstringyesOne read-only GAQL statement starting with SELECT, e.g. SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date DURING LAST_7_DAYS; no ';', '--' or '/*' anywhere, even in a string
limitinteger–Maximum rows returned (1 to 1000); Google is asked for at most 10,001 rows (LIMIT added or lowered)

No output schema declared.

No examples provided.

gsc_inspect_url ~77

Google index status of one URL (URL Inspection API): verdict, coverage state, user and Google-selected canonical, robots.txt state, page fetch state and last crawl time. Quota: 2,000 inspections per day.

NameTypeReqDescription
urlstringyesFull URL to inspect; must belong to the configured Search Console property

No output schema declared.

No examples provided.

gsc_performance ~196

Google Search Console search performance for the configured property: clicks, impressions, CTR and average position, split by query, page, country, device or date. Returns the top rows, "totals" for the whole period (same filter, no split), "truncated", the unit and definition of each metric under "metrics", and a "date_range" in Pacific Time (Search Console's timezone) with "data_complete".

NameTypeReqDescription
dimensionsarray–How to split the results
end_datestring–YYYY-MM-DD; empty means 2 days ago (Search Console data lag)
limitinteger–Maximum rows returned (1 to 1000); totals always cover the whole property
page_containsstring–Optional: keep only pages whose URL contains this text
start_datestring–YYYY-MM-DD; empty means 30 days ago (Pacific Time)

No output schema declared.

No examples provided.

gsc_sitemaps ~30

Sitemaps declared in Search Console, with last submission, last download, errors and warnings.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gtm_inventory ~65

Tags (type, paused, firing triggers, parameters), triggers and variables of the configured Google Tag Manager container's default workspace, plus the id of the live published version. Built-in trigger ids are translated, e.g. All Pages. Useful to spot a tag configured twice.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

indexing_status ~59

Latest Indexing API notifications (URL_UPDATED / URL_DELETED) Google holds for a URL. Read only: nothing is submitted. Most URLs were never notified, which is reported as such.

NameTypeReqDescription
urlstringyesFull URL to look up

No output schema declared.

No examples provided.

merchant_data_sources ~25

Merchant Center data sources (feeds): labels, countries, languages, fetch URLs.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

merchant_product_issues ~147

Merchant Center products with their item-level issues (disapprovals, demotions, warnings) per destination, with the attribute to fix. Scans every page of products up to max_pages. Returns {"products": [{offer_id, feed_label, title, link, issues: [{code, severity, description, attribute, destination}]}], "scanned": n, "truncated": bool}.

NameTypeReqDescription
limitinteger–Maximum products returned (1 to 1000)
max_pagesinteger–Pages of 250 products to scan at most
only_with_issuesboolean–True: only products with at least one issue; False: every product

No output schema declared.

No examples provided.

merchant_report_query ~84

Run a Merchant Center report (Merchant API reports:search) with an MCQL query, for example product status or free-listing performance. Returns Google's raw result rows.

NameTypeReqDescription
querystring–Merchant Center Query Language (MCQL) statement. Tables include product_view (must select id) and product_performance_view (clicks, impressions by date or offer)

No output schema declared.

No examples provided.

meta_ad_accounts ~55

List the Meta ad accounts the access token can read (id act_..., name, status, currency, timezone). Use it to find the account id for META_AD_ACCOUNT_ID or for the account_id argument of meta_insights.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

meta_insights ~381

Meta Ads performance (spend, impressions, clicks, reach, purchases, purchase value, ROAS) by level. ctr is recomputed as a ratio 0..1, ROAS = purchase value / spend (totals: sum of values / sum of spends), Meta's own purchase_roas is kept raw in meta_reported_roas. Currency is the ad account's, never converted.

NameTypeReqDescription
account_idstring–Ad account id (digits or act_<digits>); empty means META_AD_ACCOUNT_ID
attribution_windowsarray–Optional attribution windows for purchases (e.g. 7d_click); empty means Meta's default 7-day click + 1-day view; several windows give one figure per window, no single total
breakdownsarray–Optional extra split of each row, from a fixed list: age, gender, country, region, publisher_platform, platform_position, device_platform, impression_device
date_presetstring–Meta relative period (e.g. last_7d, last_month), exclusive with start_date/end_date; all three empty means last_28d
end_datestring–YYYY-MM-DD, last day included; leave empty with start_date to use date_preset
levelstring–Row level: account (one row per period), campaign, adset or ad
limitinteger–Maximum rows returned (1 to 500), highest spend first (daily rows too); totals cover up to 5 pages of 500 rows
start_datestring–YYYY-MM-DD, first day in the ad account's timezone; leave empty with end_date to use date_preset
time_incrementstring–all_days: one row for the whole period; 1: one row per day

No output schema declared.

No examples provided.

openai_ads_account ~85

OpenAI Ads (ChatGPT ads) ad account of the configured OPENAI_ADS_API_KEY (GET /v1/ad_account): only id, name, status, currency and timezone when present; every other key is dropped and listed in raw_fields_dropped. Use it as a connection test before openai_ads_insights. Cached 300 s ("cached": true).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

openai_ads_conversions ~531

OpenAI Ads (ChatGPT ads) conversion insights (POST /v1/conversions/insights, a read query): goal conversions (click-through and view-through) and attributed order value per campaign, ad group or ad (entity_ids), or for the whole account (group_by_entity false), over whole days in the account timezone. Returns "rows" (null kept), recomputed "totals", "currency" (account_currency), "attribution" and "date_range". No pagination: more than 2000 rows answers too_many_rows (fewer entities, shorter period or fewer event_names). Warning: attributed event details may contain order or user identifiers; only documented aggregate fields are kept.

NameTypeReqDescription
account_timezonestringyesIANA timezone of the ad account, e.g. Europe/Paris (the timezone column of openai_ads_insights): the API counts whole days in it
aggregation_levelstringyesRequired row entity: campaign, ad_group or ad
attribution_time_basisstring–ad_event_time (API default) or conversion_time; empty sends nothing
attribution_window_daysinteger–Click attribution window in days: 7, 14 or 30
breakdownstring–Optional breakdown: country or device; empty for none
end_datestringyesLast day, YYYY-MM-DD (inclusive)
entity_ids––Ids of the entities of aggregation_level (1 to 100). Required when group_by_entity is true; must be empty when it is false
event_names––Optional exact event names for the event details (requires include_attributed_events; here at most 20 names of 64 characters among letters, digits, _ . : -, stricter than the API)
group_by_entityboolean–True (API default): one row per entity of entity_ids; false: one row for the whole ad account (no entity_ids)
include_attributed_eventsboolean–True: add per-event aggregates (event_name, counts, value); may expose order or user identifiers, so only aggregate fields are kept
include_zero_rowsboolean–True (API default): keep rows without conversions
start_datestringyesFirst day, YYYY-MM-DD (whole days, 365 days at most)
time_granularitystring–none: period totals; daily: one row per day
view_through_attribution_window_daysinteger–View-through attribution window in days: 0 or 1

No output schema declared.

No examples provided.

openai_ads_insights ~761

OpenAI Ads (ChatGPT ads) performance over a date range: impressions, clicks, spend, ctr, conversions and attributed sales for the ad account or one campaign, ad group or ad. Returns "rows" as reported (flat keys such as campaign_id; null kept, null_means "non calculable"), recomputed "totals" (roas = sum of sales / sum of spend), "currency" (from order_created_attributed_sales_currency, else None), "date_range" in the timezone returned by the API, "next_after" while has_more (reads up to max_rows rows over at most 5 pages), units (spend in major currency units, ctr ratio) and "attribution". No automatic retry.

NameTypeReqDescription
afterstring–next_after (last_id) of a previous call to read the next rows; empty to start
aggregation_levelstring–Row entity inside the endpoint scope: ad_account, campaign, ad_group or ad; empty uses the endpoint level
attribution_time_basisstring–ad_event_time (API default) or conversion_time; empty sends nothing
attribution_window_daysinteger–Click attribution window in days: 7, 14 or 30
beforestring–first_id of a previous call to read the rows before it (one page); not with after
end_datestringyesLast day, YYYY-MM-DD (inclusive)
entity_idstring–Id of the campaign, ad group or ad (letters, digits, _ and -); empty for level account
fields––Canonical field names, e.g. impressions, clicks, spend, ctr, cpc, cpm, conversions, cpa, post_click_cvr, order_created_attributed_sales, order_created_attributed_sales_currency, order_created_roas, c…
filters––Optional filters, combined with AND: {"field": "campaign.id", "operator": "IN", "value": ["cmpn_1"]} or {"field": "ad.clicks", "operator": "GREATER_THAN" or "LESS_THAN", "value": 10} (at most 10)
include_zero_impression_itemsboolean–True: also return entities with zero impressions (only without a segment)
levelstring–Which endpoint: account = the whole ad account; campaign, ad_group or ad = one entity given by entity_id
max_rowsinteger–Maximum rows returned by this call (1 to 6000), over at most 5 pages
page_sizeinteger–Rows per API page (1 to 2000)
segmentstring–Optional single segment: product, country, device or platform (request segment fields such as country.clicks)
sort––Optional sort criteria in order: [{"field": "spend", "direction": "desc"}] (at most 5)
start_datestringyesFirst day, YYYY-MM-DD
time_granularitystring–none: one row per entity for the period; daily, monthly or hourly (hourly: about 30 days of history, not with a segment)
timezonestring–Optional IANA timezone of the day boundaries; empty uses the ad account timezone (keep empty for conversion or sales metrics, which require whole days in the account timezone)
view_through_attribution_window_daysinteger–View-through attribution window in days: 0 or 1

No output schema declared.

No examples provided.

pagespeed ~83

Lighthouse performance and SEO scores (0 to 100) plus LCP, CLS and TBT for a URL, and the Chrome UX Report field category when Google has real-user data. Set PAGESPEED_API_KEY to avoid the shared anonymous quota.

NameTypeReqDescription
strategystring–Device profile Lighthouse emulates
urlstringyesFull public URL to test

No output schema declared.

No examples provided.

server_status ~71

Which Google services are configured for this server, and whether the stored OAuth token works. Call it first when another tool answers not_configured or not_authenticated. Returns one boolean per service, the token storage (os-keyring or file), "token": "ok" or the error, and the package version.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Install

How do I install the Google E-commerce (GA4, Search Console, Merchant Center) MCP server?

Google E-commerce (GA4, Search Console, Merchant Center) runs locally as a PyPI package, launched with uvx google-ecommerce-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · google-ecommerce-mcp

# add to Claude Code
claude mcp add mooneyes-google-ecommerce-mcp -- uvx google-ecommerce-mcp
Common questions

What is the Google E-commerce (GA4, Search Console, Merchant Center) MCP server?

Google E-commerce (GA4, Search Console, Merchant Center) is an MCP server listed in the public MCP registry as io.github.MoonEyes/google-ecommerce-mcp. Read-only GA4, Search Console, Merchant Center, Tag Manager, Indexing and PageSpeed for shops. This page covers its PyPI package (google-ecommerce-mcp).

Is the Google E-commerce (GA4, Search Console, Merchant Center) MCP server safe to use?

Google E-commerce (GA4, Search Console, Merchant Center) scores 85 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 16 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Google E-commerce (GA4, Search Console, Merchant Center) MCP server expose?

Google E-commerce (GA4, Search Console, Merchant Center) exposes 22 tools: server_status, ga4_report, ga4_realtime, ga4_properties, gsc_performance, and 17 more. Their descriptions and schemas cost roughly 4,334 tokens of context every time the server is loaded.

Is the Google E-commerce (GA4, Search Console, Merchant Center) MCP server still maintained?

Google E-commerce (GA4, Search Console, Merchant Center) is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Google E-commerce (GA4, Search Console, Merchant Center) MCP server under?

Google E-commerce (GA4, Search Console, Merchant Center) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.