list_account_pages
Retrieve Facebook Pages associated with a Meta Ads account to manage page-level advertising permissions and access.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ad_account_id | Yes | ||
| meta_access_token | No |
Implementation Reference
- The implementation of the `list_account_pages` tool.
@mcp_server.tool() @meta_api_tool async def list_account_pages(ad_account_id: str, meta_access_token: Optional[str] = None) -> str: if not ad_account_id: return _json({"error": "No account ID provided"}) if ad_account_id == "me": try: payload = await make_api_request("me/accounts", meta_access_token, {"fields": _PAGE_FIELDS, "page_size": 200}) if isinstance(payload, dict) and isinstance(payload.get("data"), list): for page in payload["data"]: if isinstance(page, dict): page["source"] = "me/accounts" page["confidence"] = "primary_documented" return _json(payload) except Exception as exc: # noqa: BLE001 return _json({"error": "Failed to get user pages", "details": str(exc)}) normalized_account_id = _normalize_ad_account_id(ad_account_id) try: discovery = await _collect_account_page_candidates(normalized_account_id, meta_access_token) pages = discovery.get("pages", []) if pages: return _json( { "data": pages, "total_pages_found": len(pages), "source_counts": discovery.get("source_counts", {}), "failed_sources": discovery.get("failures", []), } ) return _json( { "data": [], "message": "No pages found associated with this account", "source_counts": discovery.get("source_counts", {}), "failed_sources": discovery.get("failures", []), "suggestion": ( "Connect a Facebook page to this ad account or provide facebook_page_id manually. " "Primary documented edges were checked before fallbacks." ), } ) except Exception as exc: # noqa: BLE001 return _json({"error": "Failed to get account pages", "details": str(exc)})