---
title: "Meta Ads reporting tools"
description: "Read connected Meta ad accounts, spend and results by account, campaign and ad, and audience breakdowns. Read only."
url: "https://sellify.ai/docs/developers/mcp-tools/meta-ads"
updated: "2026-10-22"
---

# Meta Ads reporting tools

> Read connected Meta ad accounts, spend and results by account, campaign and ad, and audience breakdowns. Read only.

Read connected Meta ad accounts, spend and results by account, campaign and ad, and audience breakdowns. Read only. This page lists 5 tools, 5 of them read-only.

- [`meta_ads_account_list`](#meta_ads_account_list): List connected Meta ad accounts
- [`meta_ads_performance_get`](#meta_ads_performance_get): Get Meta ads performance totals
- [`meta_ads_campaign_list`](#meta_ads_campaign_list): List Meta campaigns with performance
- [`meta_ads_ad_list`](#meta_ads_ad_list): List Meta ads with performance
- [`meta_ads_ad_set_breakdown_get`](#meta_ads_ad_set_breakdown_get): Break down an ad set by audience and placement

## `meta_ads_account_list`

**List connected Meta ad accounts**

Lists the Meta ad accounts connected to this workspace, whether Meta is connected, when data was last synced, and the metrics and breakdowns the other Meta Ads tools report.

Call this first for any question about the user’s own Meta ads, campaigns, spend or results. When connected is false, tell the user to connect Meta in Sellify’s Ads Manager; the other Meta Ads tools will return nothing. Pass accountId to the other tools when the user names one account; pass null to cover all of them.

| Property       | Value                  |
| -------------- | ---------------------- |
| Access         | Read-only              |
| Scope          | Ads: read (`ads:read`) |
| Credits        | Free                   |
| Safe to repeat | Yes                    |

### Input

| Field             | Type | Required | Description                                                                                                                                                                                                                      |
| ----------------- | ---- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `response_format` | enum | No       | "concise" (the default) shortens long text and leaves out nested details in each result. Pass "detailed" only when you need the full text or nested details of a result. One of: `concise`, `detailed`. Defaults to `"concise"`. |

### Output

| Field              | Type            | Description                                                                              |
| ------------------ | --------------- | ---------------------------------------------------------------------------------------- |
| `connected`        | boolean         |                                                                                          |
| `connectionStatus` | string or null  |                                                                                          |
| `lastSyncedAt`     | string or null  |                                                                                          |
| `accounts`         | array of object |                                                                                          |
| `metrics`          | array of string |                                                                                          |
| `breakdowns`       | array of string |                                                                                          |
| `defaultDays`      | integer         |                                                                                          |
| `notice`           | string          | Present when results were left out to keep the response small. Says how to see the rest. |

### Example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "meta_ads_account_list",
    "arguments": {}
  }
}
```

## `meta_ads_performance_get`

**Get Meta ads performance totals**

Returns Meta ads spend, results, CPA, ROAS and the other metrics for one ad account or all of them, as totals and day by day. Days are each ad account's reporting days. With no dates the window is the last 7 days up to today (UTC). Data comes from Sellify's sync of Meta, so today can be incomplete.

Use for account-level questions such as how much was spent this week or whether results are trending up. currency is null when several accounts are totalled; money values are then each account’s own currency added together, so say so.

| Property       | Value                  |
| -------------- | ---------------------- |
| Access         | Read-only              |
| Scope          | Ads: read (`ads:read`) |
| Credits        | Free                   |
| Safe to repeat | Yes                    |

### Input

| Field             | Type                  | Required | Description                                                                                                                                                                                                                      |
| ----------------- | --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accountId`       | string (uuid) or null | No       | From the account list. null for all accounts.                                                                                                                                                                                    |
| `dateFrom`        | string                | No       | Pass with dateTo.                                                                                                                                                                                                                |
| `dateTo`          | string                | No       |                                                                                                                                                                                                                                  |
| `response_format` | enum                  | No       | "concise" (the default) shortens long text and leaves out nested details in each result. Pass "detailed" only when you need the full text or nested details of a result. One of: `concise`, `detailed`. Defaults to `"concise"`. |

### Output

| Field      | Type            | Description                                                                              |
| ---------- | --------------- | ---------------------------------------------------------------------------------------- |
| `window`   | object          |                                                                                          |
| `currency` | string or null  |                                                                                          |
| `totals`   | object          |                                                                                          |
| `daily`    | array of object |                                                                                          |
| `notice`   | string          | Present when results were left out to keep the response small. Says how to see the rest. |

### Example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "meta_ads_performance_get",
    "arguments": {}
  }
}
```

## `meta_ads_campaign_list`

**List Meta campaigns with performance**

Lists Meta campaigns with their status, budget and performance in a date window, ranked by spend unless another metric is chosen. Days are each ad account's reporting days. With no dates the window is the last 7 days up to today (UTC). Data comes from Sellify's sync of Meta, so today can be incomplete.

Use for campaign-level comparisons. To see the ads inside one campaign, pass its campaignId to the Meta ad list. Rankings across accounts are not converted between currencies.

| Property       | Value                  |
| -------------- | ---------------------- |
| Access         | Read-only              |
| Scope          | Ads: read (`ads:read`) |
| Credits        | Free                   |
| Safe to repeat | Yes                    |

### Input

| Field             | Type                  | Required | Description                                                                                                                                                                                                                      |
| ----------------- | --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accountId`       | string (uuid) or null | No       | From the account list. null for all accounts.                                                                                                                                                                                    |
| `query`           | string or null        | No       | null unless the user names a campaign or ad.                                                                                                                                                                                     |
| `status`          | array of enum or null | No       | null for every status.                                                                                                                                                                                                           |
| `sortBy`          | enum                  | No       | Defaults to spend. One of: `spend`, `roas`, `cpa`, `ctr`, `cpc`, `cpm`, `results`, `impressions`, `clicks`.                                                                                                                      |
| `sortOrder`       | enum                  | No       | One of: `asc`, `desc`.                                                                                                                                                                                                           |
| `limit`           | integer               | No       | Between 1 and 50.                                                                                                                                                                                                                |
| `offset`          | integer               | No       |                                                                                                                                                                                                                                  |
| `dateFrom`        | string                | No       | Pass with dateTo.                                                                                                                                                                                                                |
| `dateTo`          | string                | No       |                                                                                                                                                                                                                                  |
| `response_format` | enum                  | No       | "concise" (the default) shortens long text and leaves out nested details in each result. Pass "detailed" only when you need the full text or nested details of a result. One of: `concise`, `detailed`. Defaults to `"concise"`. |

### Output

| Field       | Type            | Description                                                                              |
| ----------- | --------------- | ---------------------------------------------------------------------------------------- |
| `window`    | object          |                                                                                          |
| `total`     | integer         |                                                                                          |
| `hasMore`   | boolean         |                                                                                          |
| `campaigns` | array of object |                                                                                          |
| `notice`    | string          | Present when results were left out to keep the response small. Says how to see the rest. |

### Example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "meta_ads_campaign_list",
    "arguments": {}
  }
}
```

## `meta_ads_ad_list`

**List Meta ads with performance**

Lists individual Meta ads with their copy, creative thumbnail and performance in a date window, ranked by spend unless another metric is chosen. Marks ads whose image was made in Sellify. Days are each ad account's reporting days. With no dates the window is the last 7 days up to today (UTC). Data comes from Sellify's sync of Meta, so today can be incomplete.

Use to find winning or losing ads: sort by roas, cpa or ctr, and ignore ads with little spend before calling one a winner. To explain why an ad wins, compare its headline, primaryText and creative with the others, then break down its ad set by adSetId. sellifyAd matches ads in the Sellify ad library. Pass sellifyOnly true when the user asks how their Sellify ads perform. Rankings across accounts are not converted between currencies.

| Property       | Value                  |
| -------------- | ---------------------- |
| Access         | Read-only              |
| Scope          | Ads: read (`ads:read`) |
| Credits        | Free                   |
| Safe to repeat | Yes                    |

### Input

| Field             | Type                  | Required | Description                                                                                                                                                                                                                      |
| ----------------- | --------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accountId`       | string (uuid) or null | No       | From the account list. null for all accounts.                                                                                                                                                                                    |
| `query`           | string or null        | No       | null unless the user names a campaign or ad.                                                                                                                                                                                     |
| `status`          | array of enum or null | No       | null for every status.                                                                                                                                                                                                           |
| `sortBy`          | enum                  | No       | Defaults to spend. One of: `spend`, `roas`, `cpa`, `ctr`, `cpc`, `cpm`, `results`, `impressions`, `clicks`.                                                                                                                      |
| `sortOrder`       | enum                  | No       | One of: `asc`, `desc`.                                                                                                                                                                                                           |
| `limit`           | integer               | No       | Between 1 and 50.                                                                                                                                                                                                                |
| `offset`          | integer               | No       |                                                                                                                                                                                                                                  |
| `dateFrom`        | string                | No       | Pass with dateTo.                                                                                                                                                                                                                |
| `dateTo`          | string                | No       |                                                                                                                                                                                                                                  |
| `campaignId`      | string (uuid) or null | No       | From the campaign list. null for every campaign.                                                                                                                                                                                 |
| `sellifyOnly`     | boolean               | No       | Only ads whose image was made in Sellify.                                                                                                                                                                                        |
| `response_format` | enum                  | No       | "concise" (the default) shortens long text and leaves out nested details in each result. Pass "detailed" only when you need the full text or nested details of a result. One of: `concise`, `detailed`. Defaults to `"concise"`. |

### Output

| Field     | Type            | Description                                                                              |
| --------- | --------------- | ---------------------------------------------------------------------------------------- |
| `window`  | object          |                                                                                          |
| `total`   | integer         |                                                                                          |
| `hasMore` | boolean         |                                                                                          |
| `ads`     | array of object |                                                                                          |
| `notice`  | string          | Present when results were left out to keep the response small. Says how to see the rest. |

### Example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "meta_ads_ad_list",
    "arguments": {}
  }
}
```

## `meta_ads_ad_set_breakdown_get`

**Break down an ad set by audience and placement**

Splits one Meta ad set's performance by age, gender, placement and country, ranked by spend. Meta breakdowns cover the last 30 days only. Days are each ad account's reporting days. With no dates the window is the last 7 days up to today (UTC). Data comes from Sellify's sync of Meta, so today can be incomplete.

Use to explain who an ad set reaches and where it performs best. Empty lists mean Meta has not reported a breakdown for that window.

| Property       | Value                  |
| -------------- | ---------------------- |
| Access         | Read-only              |
| Scope          | Ads: read (`ads:read`) |
| Credits        | Free                   |
| Safe to repeat | Yes                    |

### Input

| Field             | Type          | Required | Description                                                                                                                                                                                                                      |
| ----------------- | ------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `adSetId`         | string (uuid) | Yes      | From the Meta ad list.                                                                                                                                                                                                           |
| `dateFrom`        | string        | No       | Pass with dateTo.                                                                                                                                                                                                                |
| `dateTo`          | string        | No       |                                                                                                                                                                                                                                  |
| `response_format` | enum          | No       | "concise" (the default) shortens long text and leaves out nested details in each result. Pass "detailed" only when you need the full text or nested details of a result. One of: `concise`, `detailed`. Defaults to `"concise"`. |

### Output

| Field        | Type            | Description                                                                              |
| ------------ | --------------- | ---------------------------------------------------------------------------------------- |
| `window`     | object          |                                                                                          |
| `campaignId` | string          |                                                                                          |
| `adSetId`    | string          |                                                                                          |
| `age`        | array of object |                                                                                          |
| `gender`     | array of object |                                                                                          |
| `placement`  | array of object |                                                                                          |
| `country`    | array of object |                                                                                          |
| `notice`     | string          | Present when results were left out to keep the response small. Says how to see the rest. |

### Example

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "meta_ads_ad_set_breakdown_get",
    "arguments": {
      "adSetId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
  }
}
```

## Related

[Tool reference overview](https://sellify.ai/docs/developers/mcp-tools) · [Authentication](https://sellify.ai/docs/developers/authentication) · [Credits and limits](https://sellify.ai/docs/developers/credits-and-limits)
