# Pilot analyses and search

Source: https://pilot.braike.com/en/docs/regies/analyses-pilot

The tools Pilot adds on top of the ad platforms: search in your workspace and the analyses Pilot computes.

On top of the ad platform tools, Pilot MCP serves 2 search tools and 5 analyses computed by Pilot. They do not belong to one ad platform: they read what Pilot already collected for your workspace, unless stated otherwise.

Full Pilot has other analyses that the Pilot MCP offer does not serve: those that rely on full Pilot features (objectives, campaign labels, proposals, automations), and the creative diagnostics, which query an ad platform live.

<Callout title="Language of the descriptions">
Pilot describes its own tools in English: this is the text your assistant receives. Each entry starts with a summary.
</Callout>

## Search in your workspace [#recherche]

### `search` [#search]

**Search Campaigns** · read-only · idempotent

Finds what matches a free-text query in your workspace, such as the name of a campaign.

Search the workspace for advertising campaigns matching a free-text query. Returns a list of records (id, title, url) the client can then fetch.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | `string` | yes | Free-text search query. Matches campaign names. |

### `fetch` [#fetch]

**Fetch Campaign** · read-only · idempotent

Returns the details of a `search` result, from its identifier.

Fetch a complete advertising campaign by ID (as returned by search), with its recent performance metrics.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | yes | The namespaced campaign ID returned by search (e.g. "campaign:meta:123"). |

## Pilot analyses [#analyses]

### `pilot_data_freshness` [#pilot_data_freshness]

**Data Freshness** · read-only · idempotent · reads the data collected by Pilot

The freshness of the data Pilot collected, and where a gap comes from: a broken collection, or an account that stopped delivering.

Freshness of the data Pilot has collected, per ad platform, and above all who a gap is due to: a collection failing on Pilot's side, or an account that stopped delivering. Each platform is judged on its weakest account: data covered through, last collection and its status, delay in days, and a cause: up to date (data at most 3 days old), late on Pilot's side (older data, and the last collection failed or is more than 2 days old), no activity on the account's side (older data, but a collection succeeded within 2 days) or unknown (no coverage date yet). Collection dates are returned because they are what tells these causes apart. Reads Pilot's database only, without calling the ad platforms.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `platform` | `string` | no | Restrict to one ad platform ('google', 'meta', 'google\_analytics'...). |

### `pilot_cross_platform_overview` [#pilot_cross_platform_overview]

**Cross-Platform Overview** · read-only · idempotent · reads the data collected by Pilot

Spend and performance consolidated across all your ad platforms, with ratios recomputed on the totals. Refuses a money total when currencies differ.

Spend and performance consolidated across the connected ad platforms over the last days (default 30, at most 365): impressions, clicks, conversions, spend and conversion value per platform and in total, with CTR, CPC, CPM, CPA, ROAS and conversion rate recomputed on the totals, never averaged across platforms. Refuses to return a money total when several currencies coexist or a currency is unknown, rather than return a wrong figure; impressions, clicks, conversions, CTR and conversion rate stay. Analytics and Search Console traffic is left out unless include\_organic is true. Reads Pilot's database only, without calling the ad platforms.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `days` | `integer` | no | Window in days. Default 30. |
| `platform` | `string` | no | Restrict to one ad platform. |
| `include_organic` | `boolean` | no | Include Analytics and Search Console (organic traffic). Default: false. |

### `pilot_diagnose_wasted_spend` [#pilot_diagnose_wasted_spend]

**Wasted Spend** · read-only · idempotent · reads the data collected by Pilot

Spend without conversions and outlier costs per acquisition, beyond twice the account's median cost.

Campaigns that spend without converting, and those whose CPA is above a threshold, over the last days (default 30). Only campaigns that spent at least min\_spend (default 50) are judged. The default CPA threshold is the account's median CPA times cpa\_multiple (default 2): the median, so that an outlier campaign does not move the threshold used to judge it; max\_cpa sets it instead. A conversion that was not collected is never counted as no conversion: such campaigns are listed apart as undetermined, with the reason. Up to limit campaigns per list (default 25, at most 100). Reads Pilot's database only, without calling the ad platforms.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `days` | `integer` | no |   |
| `platform` | `string` | no |   |
| `min_spend` | `number` | no | Minimum spend for a campaign to be judged. Default 50. |
| `max_cpa` | `number` | no | CPA threshold to apply. Otherwise computed from the median CPA. |
| `cpa_multiple` | `number` | no | Multiple of the median CPA. Default 2. |
| `limit` | `integer` | no |   |

### `pilot_budget_pacing` [#pilot_budget_pacing]

**Budget Pacing** · read-only · idempotent · reads the data collected by Pilot

Spend pacing: what is capped, what is idle and what is undetermined, with the reason.

Where the budget is capped and where it sits idle: compares each campaign's average daily spend over the last days (default 30) with its daily budget. A campaign spending seuil\_plafond of its budget or more (default 0.9) is capped, one spending seuil\_sous\_utilisation or less (default 0.5) is underused, and the idle daily budget of underused campaigns is totaled. Campaigns whose budget or spend was not collected, whose daily budget is zero, or that run on a lifetime budget, are set apart with the reason, never ranked as underused: an unknown budget is not a zero budget. Reads Pilot's database only, without calling the ad platforms.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `days` | `integer` | no |   |
| `platform` | `string` | no |   |
| `seuil_plafond` | `number` | no | Share of the daily budget spent from which a campaign counts as capped. Default 0.9. |
| `seuil_sous_utilisation` | `number` | no | Share of the daily budget spent up to which a campaign counts as underused. Default 0.5. |

### `pilot_account_concentration` [#pilot_account_concentration]

**Account Concentration** · read-only · idempotent · reads the data collected by Pilot

How many campaigns carry 80% of the spend.

How many campaigns carry 80% of the spend over the last days (default 30): tells whether the account rests on a handful of campaigns or spreads its spend, with the top campaigns by spend and their share (limit, default 10, at most 50). Amounts are summed as collected, without currency conversion. Reads Pilot's database only, without calling the ad platforms.

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `days` | `integer` | no |   |
| `platform` | `string` | no |   |
| `limit` | `integer` | no |   |
