> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trycontinuum.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics, trends, and competitors

> MCP tools for organic, paid, and website results, audiences, creative strategy, trends, and competitor intelligence: inputs, examples, and errors.

Generated from the server's own tool registry, as released on 2026-11-05. Every section lists what the tool needs, whether it waits for a yes, how it completes, each action's inputs, valid example calls, and the errors it can return. Before you call a tool, fetch its live schema with `help_describe`; if the server and this page disagree, the server wins.

| Tool | What it does | Changes things |
| - | - | - |
| [`analytics_query`](#analytics_query) | Organic, paid, and website results by platform: accounts, top posts, campaigns, ad sets, and ads. | No |
| [`analytics_creative_insights`](#analytics_creative_insights) | Ranks your Meta ad creatives by video retention: hook rate and hold rate. | No |
| [`analytics_cross_platform_spend`](#analytics_cross_platform_spend) | Spend, conversions, cost per acquisition, and return on ad spend across your connected ad platforms. | No |
| [`analytics_pacing_diagnostic`](#analytics_pacing_diagnostic) | Which Meta campaigns are pacing ahead of or behind budget, with a 0–100 health score. | No |
| [`audience_query`](#audience_query) | Your Meta audiences, ad set targeting, and demographic and placement breakdowns. | No |
| [`creative_strategy`](#creative_strategy) | What works for you: opening-line (hook) scoring, win rates, and competitive gaps. | No |
| [`trends_manage`](#trends_manage) | Your brand's trends report. | No |
| [`intel_trend_discovery`](#intel_trend_discovery) | The hashtags people post under on Instagram or TikTok, with post counts and growth, plus trending search keywords on TikTok. | No |
| [`intel_competitor_moves`](#intel_competitor_moves) | A digest of what your tracked competitors run in paid ads and post organically, by angle, hook, call to action, and format. | No |
| [`intel_competitor_ads`](#intel_competitor_ads) | Ads from competitors you track, including how long each has run. | No |
| [`intel_competitor_organic`](#intel_competitor_organic) | Organic posts from competitors you track. | No |
| [`intel_competitor_ad_library`](#intel_competitor_ad_library) | Looks up any advertiser in the Meta Ad Library. | No |
| [`intel_competitor_scan`](#intel_competitor_scan) | Runs a fresh competitor scan, the same as the app's **Scan** button. | Yes |

### `analytics_query`

Organic, paid, and website results by platform: accounts, top posts, campaigns, ad sets, and ads.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | Always. |
| Role | Viewer or higher. |
| Needs | An active brand. Connection: The one for what you act on: Meta (Facebook), Google, LinkedIn, YouTube. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Actions** (`platform`):

| platform | Required inputs | Other inputs it uses |
| - | - | - |
| `instagram` | `platform` | `account_id`, `scope`, `date_window`, `metric`, `direction`, `top_n`, `include`, `post_id` |
| `facebook` | `platform` | `account_id`, `scope`, `date_window`, `metric`, `direction`, `top_n`, `include`, `post_id` |
| `tiktok` | `platform` | `account_id`, `scope`, `date_window`, `metric`, `direction`, `top_n`, `include`, `post_id` |
| `linkedin` | `platform` | `account_id`, `surface`, `scope`, `date_window`, `metric`, `kpi`, `direction`, `top_n`, `include`, `include_daily_trend`, `since`, `until`, `post_id`, `campaign_id`, and 1 more |
| `youtube` | `platform` | `account_id`, `scope`, `date_window`, `metric`, `direction`, `top_n` |
| `google_ads` | `platform` | `account_id`, `scope`, `kpi`, `date_window`, `since`, `until`, `direction`, `top_n`, `include_daily_trend`, `campaign_id`, `adset_id` |
| `meta` | `platform` | `account_id`, `scope`, `kpi`, `date_window`, `since`, `until`, `direction`, `top_n`, `include_daily_trend`, `level`, `limit`, `cursor`, `campaign_id`, `adset_id` |
| `google_analytics` | `platform` | `property_id`, `date_range` |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Top Instagram posts by engagement, last 30 days: `{"name":"analytics_query","arguments":{"platform":"instagram","scope":"top_posts","metric":"engagement_rate","date_window":"last_30d","top_n":5}}`
* Meta ad account overview, last 7 days: `{"name":"analytics_query","arguments":{"platform":"meta","account_id":"act_1234567890","scope":"overview","date_window":"last_7d"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `ACCOUNT_FORBIDDEN` | That ad or social account isn't assigned to this brand, or the person can't reach it. Pick one from `accounts_list`. |
| `PERMISSION_DENIED` | The person's role can't do this. Ask an Admin or Owner. |
| `UPSTREAM_ERROR` | A platform or provider returned an error. `details` carries its message. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |
| `needs_brand` | No brand is active. Call `brands_select`. |
| `needs_integration` | The brand lacks the connection this call needs. Call `integrations_connect` with the `platform` the result names. |

**Related:** `agent_ask`, `help_describe`.

Full schema: `help_describe {"tool":"analytics_query","action":"instagram"}`. `help_describe`'s `action` takes a `platform` value. As JSON: [`/mcp/schemas/analytics_query.json`](https://docs.trycontinuum.ai/mcp/schemas/analytics_query.json).

### `analytics_creative_insights`

Ranks your Meta ad creatives by video retention: hook rate and hold rate.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When a brand you can reach has a facebook connection. |
| Role | Viewer or higher |
| Needs | An active brand. Connection: Meta (Facebook). |
| Confirmation | None. The call runs when made. |
| Completion | Returns a `job_id`. Read the result with `jobs_status`. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `platform` | string | Yes | The network to act on. See the allowed values. One of `meta_ads`. |
| `ad_account_id` | string | No | The Meta ad account ID (`act_…`), from `account_map`. |
| `lookback_days` | integer | No | How many days back to read. |
| `top_n` | integer | No | How many top items to return. |
| `min_impressions` | integer | No | Leave out ads with fewer impressions than this. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Top 10 IG ads: `{"name":"analytics_creative_insights","arguments":{"platform":"meta_ads","lookback_days":30,"top_n":10}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `VALIDATION_ERROR` | Only `meta_ads` has creative retention (hook/hold) data. |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `needs_integration` | The brand has no facebook connection. Call `integrations_connect`. |

**Related:** `jobs_status`.

Full schema: `help_describe {"tool":"analytics_creative_insights"}`. As JSON: [`/mcp/schemas/analytics_creative_insights.json`](https://docs.trycontinuum.ai/mcp/schemas/analytics_creative_insights.json).

### `analytics_cross_platform_spend`

Spend, conversions, cost per acquisition, and return on ad spend across your connected ad platforms.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When a brand you can reach has a facebook connection. |
| Role | Viewer or higher |
| Needs | An active brand. Connection: Meta (Facebook). |
| Confirmation | None. The call runs when made. |
| Completion | Returns a `job_id`. Read the result with `jobs_status`. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `platforms` | array | Yes | Which platforms to include. |
| `ad_account_ids` | object | No | The ad account IDs to read, per platform. |
| `since` | string | Yes | Start of the window, as a date (`YYYY-MM-DD`). |
| `until` | string | Yes | End of the window, as a date (`YYYY-MM-DD`). |
| `breakdown` | string | No | What to break results down by. One of `day`, `week`, `platform`, `campaign`. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Spend last 30d: `{"name":"analytics_cross_platform_spend","arguments":{"platforms":["meta_ads"],"since":"2026-04-01","until":"2026-04-30"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `needs_integration` | The brand has no facebook connection. Call `integrations_connect`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `analytics_pacing_diagnostic`, `analytics_creative_insights`, `jobs_status`.

Full schema: `help_describe {"tool":"analytics_cross_platform_spend"}`. As JSON: [`/mcp/schemas/analytics_cross_platform_spend.json`](https://docs.trycontinuum.ai/mcp/schemas/analytics_cross_platform_spend.json).

### `analytics_pacing_diagnostic`

Which Meta campaigns are pacing ahead of or behind budget, with a 0–100 health score.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When a brand you can reach has a facebook connection. |
| Role | Viewer or higher |
| Needs | An active brand. Connection: Meta (Facebook). |
| Confirmation | None. The call runs when made. |
| Completion | Returns a `job_id`. Read the result with `jobs_status`. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `platform` | string | Yes | The network to act on. See the allowed values. One of `meta_ads`. |
| `ad_account_id` | string | Yes | The Meta ad account ID (`act_…`), from `account_map`. |
| `campaign_ids` | array | No | The campaign IDs to include. |
| `as_of` | string | No | — |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Pacing health: `{"name":"analytics_pacing_diagnostic","arguments":{"platform":"meta_ads","ad_account_id":"act_123"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `needs_integration` | The brand has no facebook connection. Call `integrations_connect`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `analytics_cross_platform_spend`, `jobs_status`.

Full schema: `help_describe {"tool":"analytics_pacing_diagnostic"}`. As JSON: [`/mcp/schemas/analytics_pacing_diagnostic.json`](https://docs.trycontinuum.ai/mcp/schemas/analytics_pacing_diagnostic.json).

### `audience_query`

Your Meta audiences, ad set targeting, and demographic and placement breakdowns.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | Always. |
| Role | Viewer or higher. |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Actions** (`action`):

| action | Required inputs | Other inputs it uses |
| - | - | - |
| `list_audiences` | `action`, `ad_account_id` | `kind` |
| `targeting` | `action`, `ad_account_id`, `adset_id` | — |
| `breakdown` | `action`, `ad_account_id`, `dimension` | `level`, `object_id`, `date_window`, `granularity`, `result_action_type` |
| `organic_demographics` | `action`, `platform` | `account_id`, `date_window` |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* List custom audiences: `{"name":"audience_query","arguments":{"action":"list_audiences","ad_account_id":"act_1234567890","kind":"custom"}}`
* Results by age, last 30 days: `{"name":"audience_query","arguments":{"action":"breakdown","ad_account_id":"act_1234567890","dimension":"age","date_window":"last_30d"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |
| `needs_brand` | No brand is active. Call `brands_select`. |

**Related:** `account_map`, `help_describe`.

Full schema: `help_describe {"tool":"audience_query","action":"list_audiences"}`. As JSON: [`/mcp/schemas/audience_query.json`](https://docs.trycontinuum.ai/mcp/schemas/audience_query.json).

### `creative_strategy`

What works for you: opening-line (hook) scoring, win rates, and competitive gaps.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | Always. |
| Role | Viewer or higher to read. Operator or higher for `refresh`. |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Actions** (`action`):

| action | Required inputs | Other inputs it uses |
| - | - | - |
| `overview` | `action` | — |
| `search` | `action`, `query` | `kinds`, `surfaces`, `limit` |
| `read` | `action` | `insight_id` |
| `refresh` | `action` | `target` |
| `score_hook` | `action`, `hook_text` | `mode` |
| `competitive_gaps` | `action` | — |
| `winrates` | `action` | `scope`, `window`, `dimension`, `funnel_stage` |
| `vector_signals` | `action` | `window` |

In this table, `a|b` means one of them and `a+b` means together.

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Inventory + leaderboards: `{"name":"creative_strategy","arguments":{"action":"overview"}}`
* Find winning hooks: `{"name":"creative_strategy","arguments":{"action":"search","query":"curiosity hook","kinds":["hook"]}}`
* Read one insight: `{"name":"creative_strategy","arguments":{"action":"read","insight_id":"hook-problem_agitation"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `VALIDATION_ERROR` | action=search requires `query`. |
| `BRAND_NOT_SELECTED` | Call `brands_select` first. |
| `needs_brand` | No brand is active. Call `brands_select`. |
| `needs_role` | The person's role is too low for this call. Needs: Viewer or higher to read. Operator or higher for `refresh`. Ask an Admin or Owner. |

**Related:** `brand_knowledge`, `analytics_query`, `content_create`, `analytics_creative_insights`.

Full schema: `help_describe {"tool":"creative_strategy","action":"overview"}`. As JSON: [`/mcp/schemas/creative_strategy.json`](https://docs.trycontinuum.ai/mcp/schemas/creative_strategy.json).

### `trends_manage`

Your brand's trends report.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | Always. |
| Role | Viewer or higher. Operator or higher to force a fresh report with `force_regenerate`. |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns what is ready now. A refresh keeps running in the background; read again shortly. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `force_regenerate` | boolean | No | — |
| `generationId` | string | No | — |
| `windowsDays` | array | No | — |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Read the brand's trends report: `{"name":"trends_manage","arguments":{}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `NOT_FOUND` | The item doesn't exist, or this brand can't see it. |
| `UPSTREAM_ERROR` | A platform or provider returned an error. `details` carries its message. |
| `needs_brand` | No brand is active. Call `brands_select`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `intel_trend_discovery`, `creative_strategy`.

Full schema: `help_describe {"tool":"trends_manage"}`. As JSON: [`/mcp/schemas/trends_manage.json`](https://docs.trycontinuum.ai/mcp/schemas/trends_manage.json).

### `intel_trend_discovery`

The hashtags people post under on Instagram or TikTok, with post counts and growth, plus trending search keywords on TikTok.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When your role on a brand you can reach allows it. |
| Role | Viewer or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns right away. Longer work continues as a job; read the id in the result. |
| Retry | Safe to retry: it only reads. |
| Rate limit | 10 calls per 1 hour per brand. See [Limits](https://docs.trycontinuum.ai/mcp/reference.md#limits). |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `platform` | string | No | The network to act on. See the allowed values. One of `instagram`, `tiktok`. |
| `category` | string | No | The category to file it under. See the allowed values. |
| `niche_keywords` | array | No | — |
| `region` | string | No | — |
| `as_of` | string | No | — |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Trending IG: `{"name":"intel_trend_discovery","arguments":{"platform":"instagram"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `RATE_LIMITED` | Wait `details.retry_after_seconds`, then retry. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `intel_competitor_ad_library`, `content_create`, `jobs_status`, `trends_manage`.

Full schema: `help_describe {"tool":"intel_trend_discovery"}`. As JSON: [`/mcp/schemas/intel_trend_discovery.json`](https://docs.trycontinuum.ai/mcp/schemas/intel_trend_discovery.json).

### `intel_competitor_moves`

A digest of what your tracked competitors run in paid ads and post organically, by angle, hook, call to action, and format.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When your role on a brand you can reach allows it. |
| Role | Viewer or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `competitorId` | string | No | A tracked competitor's ID, from an earlier intel result. |
| `competitorRef` | string | No | — |
| `since` | string | No | Start of the window, as a date (`YYYY-MM-DD`). |
| `dimensions` | array | No | — |
| `source` | string | No | Which source to read or filter by. See the allowed values. One of `all`, `paid`, `organic`. |
| `limit` | integer | No | The most items to return. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* What competitors ran in paid and organic since August: `{"name":"intel_competitor_moves","arguments":{"source":"all","since":"2026-08-01","limit":20}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `intel_competitor_ads`, `intel_competitor_organic`, `intel_competitor_scan`.

Full schema: `help_describe {"tool":"intel_competitor_moves"}`. As JSON: [`/mcp/schemas/intel_competitor_moves.json`](https://docs.trycontinuum.ai/mcp/schemas/intel_competitor_moves.json).

### `intel_competitor_ads`

Ads from competitors you track, including how long each has run.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When your role on a brand you can reach allows it. |
| Role | Viewer or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `competitorId` | string | No | A tracked competitor's ID, from an earlier intel result. |
| `competitorRef` | string | No | — |
| `status` | string | No | The status to filter by or set. See the allowed values. One of `active`, `paused`. |
| `q` | string | No | — |
| `since` | string | No | Start of the window, as a date (`YYYY-MM-DD`). |
| `until` | string | No | End of the window, as a date (`YYYY-MM-DD`). |
| `angleId` | string | No | — |
| `hookArchetype` | string | No | — |
| `contentFormat` | string | No | — |
| `cta` | string | No | — |
| `minDaysRunning` | integer | No | — |
| `snapshotId` | string | No | — |
| `sort` | string | No | One of `first_seen_at`, `last_seen_at`. |
| `dir` | string | No | One of `asc`, `desc`. |
| `limit` | integer | No | The most items to return. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Longest-running active competitor ads: `{"name":"intel_competitor_ads","arguments":{"status":"active","minDaysRunning":30,"sort":"first_seen_at","dir":"asc","limit":10}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `intel_competitor_ad_library`, `intel_competitor_moves`, `intel_competitor_scan`, `jobs_status`.

Full schema: `help_describe {"tool":"intel_competitor_ads"}`. As JSON: [`/mcp/schemas/intel_competitor_ads.json`](https://docs.trycontinuum.ai/mcp/schemas/intel_competitor_ads.json).

### `intel_competitor_organic`

Organic posts from competitors you track.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When your role on a brand you can reach allows it. |
| Role | Viewer or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `competitorId` | string | No | A tracked competitor's ID, from an earlier intel result. |
| `competitorRef` | string | No | — |
| `limit` | integer | No | The most items to return. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* One competitor's recent organic posts: `{"name":"intel_competitor_organic","arguments":{"competitorRef":"Blue Bottle Coffee","limit":10}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `intel_competitor_ads`, `intel_competitor_moves`, `jobs_status`.

Full schema: `help_describe {"tool":"intel_competitor_organic"}`. As JSON: [`/mcp/schemas/intel_competitor_organic.json`](https://docs.trycontinuum.ai/mcp/schemas/intel_competitor_organic.json).

### `intel_competitor_ad_library`

Looks up any advertiser in the Meta Ad Library.

| Contract | Behavior |
| - | - |
| Changes things | No |
| Listed in your assistant | When your role on a brand you can reach allows it. |
| Role | Viewer or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns the result in the same call. |
| Retry | Safe to retry: it only reads. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `page_id` | string | No | — |
| `search_terms` | string | No | — |
| `country` | string | No | — |
| `active_status` | string | No | One of `ACTIVE`, `INACTIVE`, `ALL`. |
| `limit` | integer | No | The most items to return. |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* A Page's ads: `{"name":"intel_competitor_ad_library","arguments":{"page_id":"189799134443528","country":"MX"}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `INTEGRATION_DISCONNECTED` | The connection lapsed. Reconnect it with `integrations_connect`. |
| `UPSTREAM_ERROR` | A platform or provider returned an error. `details` carries its message. |
| `BRAND_NOT_SELECTED` | No brand is active. Call `brands_select`. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `intel_competitor_scan`, `intel_competitor_ads`.

Full schema: `help_describe {"tool":"intel_competitor_ad_library"}`. As JSON: [`/mcp/schemas/intel_competitor_ad_library.json`](https://docs.trycontinuum.ai/mcp/schemas/intel_competitor_ad_library.json).

### `intel_competitor_scan`

Runs a fresh competitor scan, the same as the app's **Scan** button.

**Good to know:**

* Answers once the first ads are stored (about 10 seconds) while the scan keeps running. Read results with `intel_competitor_ads` or `intel_competitor_moves`; `stillProcessing` above 0 means read again shortly.
* With fewer than 3 tracked competitors, it finds and tracks more itself.

| Contract | Behavior |
| - | - |
| Changes things | Yes |
| Listed in your assistant | Always. |
| Role | Operator or higher |
| Needs | An active brand. |
| Confirmation | None. The call runs when made. |
| Completion | Returns what is ready now. A refresh keeps running in the background; read again shortly. |
| Retry | Safe to retry: repeating the call gives the same result. |

**Inputs:**

| Input | Type | Required | About |
| - | - | - | - |
| `competitors` | array | No | — |

**Examples** (IDs are illustrative; use the ones earlier calls return):

* Rescan tracked competitors: `{"name":"intel_competitor_scan","arguments":{}}`
* Track and scan one: `{"name":"intel_competitor_scan","arguments":{"competitors":[{"name":"Smart Fit"}]}}`

**Errors and statuses:**

| Code | When |
| - | - |
| `CONFLICT` | The item changed or is busy. Read it again, then retry with the current state. |
| `needs_brand` | No brand is active. Call `brands_select`. |
| `needs_role` | The person's role is too low for this call. Needs: Operator or higher. Ask an Admin or Owner. |
| `VALIDATION_ERROR` | An input is missing or wrong, or it changed since the preview. `details` names the field. |

**Related:** `intel_competitor_ads`, `intel_competitor_moves`.

Full schema: `help_describe {"tool":"intel_competitor_scan"}`. As JSON: [`/mcp/schemas/intel_competitor_scan.json`](https://docs.trycontinuum.ai/mcp/schemas/intel_competitor_scan.json).

## What's next

* [All tools](https://docs.trycontinuum.ai/mcp/tools.md): Every tool on one page, and the machine-readable index.
* [Account, brand, and jobs](https://docs.trycontinuum.ai/mcp/tools/account.md): Lists the brands you can access, and more.
* [Organic+ planning and publishing](https://docs.trycontinuum.ai/mcp/tools/organic.md): Reads and proposes a week of posts, approves it, reschedules and copies posts, and attaches media, and more.
* [Performance+ ads and optimization](https://docs.trycontinuum.ai/mcp/tools/paid.md): Reads your campaign structure; creates paused campaigns, ad sets, and ads; updates or pauses them; builds audiences and lookalikes; and keeps an audit log of every write, and more.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.