Skip to main content
Glama
EfrainTorres

ArmaVita Meta Ads MCP

read_ad_image

Extract and analyze images from Meta ads to review creative assets and optimize visual content for advertising campaigns.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ad_idYes
meta_access_tokenNo

Implementation Reference

  • The `read_ad_image` function fetches an ad's creative, extracts the image hash, resolves it to a URL, downloads the image, and converts it into an MCP `Image` object. If the primary image hash is missing, it falls back to parsing creative data from the ad.
    async def read_ad_image(ad_id: str, meta_access_token: Optional[str] = None) -> Image:
        if not ad_id:
            _ad_image_error(str(ad_id), "validation", "No ad ID provided")
    
        ad_account_id, ad_creative_id = await _get_creative_id_for_ad(ad_id, meta_access_token)
    
        ad_image_hashes = await _extract_creative_image_hashes(ad_creative_id, meta_access_token)
    
        image_source_url = None
        if ad_image_hashes:
            image_source_url = await _load_image_url_from_hash(ad_account_id, meta_access_token, ad_image_hashes[0])
    
        fallback_creatives: Optional[Dict[str, Any]] = None
        if not image_source_url and not ad_image_hashes:
            fallback_creatives = await _load_fallback_creatives(ad_id, meta_access_token)
            fallback_hash = _fallback_creative_image_hash_from_payload(fallback_creatives)
            if fallback_hash:
                image_source_url = await _load_image_url_from_hash(ad_account_id, meta_access_token, fallback_hash)
    
        if not image_source_url:
            if fallback_creatives is None:
                fallback_creatives = await _load_fallback_creatives(ad_id, meta_access_token)
            image_source_url = _fallback_creative_image_url_from_payload(fallback_creatives)
    
        if not image_source_url:
            _ad_image_error(ad_id, "extract_image_url", "No image URLs found in creative")
    
        image_bytes = await download_image(image_source_url)
        if not image_bytes:
            _ad_image_error(ad_id, "download_image", "Failed to download image from creative URL")
    
        try:
            return _build_image_from_bytes(image_bytes)
        except Exception as exc:  # noqa: BLE001
            _ad_image_error(ad_id, "process_image", f"Error processing image: {exc}")

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EfrainTorres/armavita-meta-ads-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server