---
title: meta_list_pages
description: List the Facebook Pages a Meta ad account can advertise from.
---

Every Meta ad creative speaks from a Facebook Page. This lists the Pages your Meta connection can advertise from, so the agent can name one — and confirm the choice with you — before it builds anything.

:::info[Scoped to the connection, not the advertiser]

The list comes from the Pages your Meta login can act on, so it is the same for every advertiser you connected with that login. Meta refuses a Page an advertiser may not use at the moment the creative is created, and that refusal is surfaced in Meta's own words.

:::

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `advertiserId` | `acc_*` | yes | The Meta advertiser. Must belong to your active organization. |

## Output

`{ pages: [{ id, name }] }`. An empty array means no Page was shared when you connected Meta — a normal state, not an error. Reconnect and grant a Page in the consent dialog to fix it; adding the Page in Meta Business settings alone is not enough, because the connection has to be given access to it.

## Example

> _"Which page would an ad on my Meta account run from?"_

Claude calls `meta_list_pages({ advertiserId: 'acc_998877' })` and reads back the Pages with their IDs.

:::info[Reading, not writing]

This is a read tool: it needs `observe:read`, not `mutation:write`. You can plan a campaign — and see which Page it would use — on a token that cannot execute anything.

:::

## Errors

- `Advertiser not found for this organization` — the `acc_*` ID is unknown or belongs to another organization. Call `list_advertisers` to find one you own.
- `This advertiser has no usable Meta connection` — reconnect Meta.
- Anything Meta itself refuses is surfaced in Meta's own words, including its error subcode.
- `401` or `403` — see [Errors](/mcp/errors), which every tool shares. This one needs `observe:read`.
