Skip to main content
Glama
block-town

google-ads-transparency-mcp

by block-town

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_advertiser_by_domainA

Find an advertiser by their website domain.

Args: domain: The domain to search for (e.g. "nike.com", "coinbase.com")

Returns: Advertiser info with advertiser_id, name, and ad_count — or null if not found.

search_advertisersA

Search for advertisers by keyword or company name.

Args: query: Search query (e.g. "Nike", "Coinbase", "crypto exchange")

Returns: List of matching advertisers with advertiser_id, name, region, and ad_count.

get_adsA

Get ads for an advertiser with decoded content.

Searches for the advertiser by name, fetches their ad creatives, and returns full details including decoded text ad content (headline, description, destination URL).

Args: advertiser_name: The advertiser's name (e.g. "Nike, Inc.", "Coinbase") count: Number of ads to retrieve (default 10, max 100)

Returns: List of ad details with format, date, and content fields.

get_ad_detailA

Get full details for a specific ad creative.

Args: advertiser_id: The advertiser's ID (e.g. "AR05099026886533578753") creative_id: The creative/ad ID (e.g. "CR10813648716908961793")

Returns: Ad detail with format (text/image/video), last_shown date, and content. For text ads, content includes headline, description, and destination_url. For image ads, content includes image_url (a directly fetchable asset). For video ads, content includes video_id, video_url (YouTube), and the on-creative headline and button_label.

compare_advertisersA

Compare active Google ad counts across a set of domains, one row each.

The competitor paid-surface question in one call: who is running ads, and how many. Rows come back in input order; sort by ad_count yourself.

Every row has a status. "ok" means an advertiser was found; "absent" means no advertiser is registered for that domain and IS a genuine zero; "blocked" means Google rate-limited the lookup and is NOT a zero; "error" is anything else. Rows flagged parent_entity resolved to a differently named advertiser (a parent company, a reseller, or a stranger whose ads mention the domain) — never cite those counts as the domain's own.

Args: domains: Up to 50 domains or URLs (e.g. ["nike.com", "adidas.com"]).

Returns: [{domain, status, advertiser_id, advertiser_name, ad_count, parent_entity, note}, ...]

advertiser_summaryA

Summarise one advertiser: format mix, copy sample, destinations.

Fetches a sample of the advertiser's creatives and aggregates them: counts and share by format (text/image/video), the last-shown date range, de-duplicated headlines, descriptions and CTA labels, and the hosts the ads send people to. Pure aggregation — read strategy into it yourself.

Args: advertiser: An advertiser id ("AR..."), a domain ("nike.com") or a name ("Nike Retail BV"). sample: Creatives to sample (default 50, max 100). Roughly one to two requests per creative.

Returns: {status, advertiser_id, advertiser_name, active_ads, region, sample: {sampled, by_format, format_share, last_shown, headlines, descriptions, cta_labels, destination_hosts, with_video, with_image}}

fetch_ad_creativeA

Download an ad's actual creative to local files.

Image ads are always saved at their original resolution, so the file you get back is the real creative — usable in a deck or a slide as-is. Video ads are downloaded and sampled into evenly spaced JPEG frames.

Args: advertiser_id: The advertiser's ID (e.g. "AR04139428671737823233") creative_id: The creative/ad ID (e.g. "CR01542648288744833025") out_dir: Directory to write into. Defaults to a fresh temp directory. frames: How many frames to sample from a video (default 8). width: Frame width in pixels, height follows aspect (default 320). Ignored when full_quality is set; pass 0 for native resolution. full_quality: Keep the best video stream and write frames at native resolution. Use for presentation; leave off for vision analysis.

Returns: {format, out_dir, files, ...}. Text ads carry no downloadable asset and return their decoded copy instead.

download_ad_creativesA

Download a whole advertiser's creatives into one folder, with a manifest.

This is the bulk path for collecting real ad examples — images at their original resolution, videos sampled to stills — so they can be dropped straight into a deck or a report. Each creative gets its own subfolder.

Args: advertiser_name: The advertiser's name (e.g. "Buildkite", "Vercel Inc.") out_dir: Directory to write into. Created if missing. count: How many creatives to pull (default 10, max 100). full_quality: Native-resolution assets, suitable for presentation. frames: Frames to sample per video creative (default 4).

Returns: {advertiser, out_dir, manifest_path, creatives: [...]} where each entry carries its format, local file paths, and any decoded ad copy.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 8 tools

Disambiguation4/5

Most tools target a distinct operation: searching advertisers, fetching ads, comparing domains, summarizing, and downloading creatives. The main overlap is get_ads vs get_ad_detail (both return decoded ad content) and search_advertiser_by_domain vs compare_advertisers (both do domain lookups), but the descriptions sufficiently distinguish single vs batch and list vs individual.

Naming Consistency4/5

The set mostly follows verb_noun snake_case (get_ads, search_advertisers, compare_advertisers, fetch_ad_creative, download_ad_creatives). It is marred by 'advertiser_summary' (noun-style instead of summarize_advertiser) and inconsistent singular/plural in search_advertiser_by_domain vs search_advertisers, but these are minor.

Tool Count5/5

8 tools is well-scoped for a Google Ads transparency server; there is no redundancy extreme and each tool earns its place. This falls comfortably in the ideal range for a domain-specific server.

Completeness4/5

The surface covers the main user journeys: find an advertiser (keyword/domain/batch compare), inspect their ads (list/detail/summary), and download creatives (single/bulk). Minor gaps like pagination beyond count or filtering ads by date/format exist, but agents can accomplish the core transparency-research tasks without dead ends.

Maintenance

ActivityMaintained
ResponsivenessSlow