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

# MCP Tool Reference

> Complete reference for all product-line and onboarding MCP tools.

# MCP Tool Reference

This page covers the 11 MCP tools specific to product line management and onboarding. These tools are available to Claude in any conversation once the WisePilot MCP connection is active.

For general data and content tools (ads, metrics, SEO, content browsing), see the [full tool reference](/workspace/tool-reference).

***

## Product Line Tools

These tools read and write product line configuration. Write operations require `website_id` to be resolved — Claude will call `list_websites` first if it doesn't have the ID in context.

### `list_product_lines`

Lists all product lines for a website, with optional status filtering (`active`, `archived`, or `all`).

**Required parameters:** `website_id`

**Response includes:** Product line IDs, names, descriptions, tone settings, vertical count, entity tag counts, and created/updated timestamps.

**Example prompt that triggers it:**

```
Show me all product lines for [website].
```

***

### `get_product_line`

Returns full detail for a single product line, including its configured verticals, tone context, and a summary of how many entities (blogs, ads, CTAs, keyword clusters) are tagged to it.

**Required parameters:** `website_id`, `product_line_id`

**Response includes:** All `list_product_lines` fields plus verticals array, tone guidelines, linked ICP IDs, and tagged entity counts by type.

**Example prompt that triggers it:**

```
Give me the full details for the [product line name] product line.
```

***

### `create_product_line`

Creates a new product line with a name, description, and initial tone settings.

**Required parameters:** `website_id`, `name`, `description`

**Optional parameters:** `tone` (object with `voice`, `style`, `avoid` fields), `verticals` (array of vertical names)

**Response includes:** The newly created product line object with its assigned `product_line_id`.

**Example prompt that triggers it:**

```
Create a product line called "[name]" for [website]. It covers [description].
```

<Warning>Product line names must be unique within a website. Claude will check for conflicts before creating.</Warning>

***

### `update_product_line`

Updates one or more fields on an existing product line. Supports partial updates — only the fields you specify are changed.

**Required parameters:** `website_id`, `product_line_id`

**Optional parameters:** `name`, `description`, `tone`, `verticals`, `status` (`active` | `archived`)

**Response includes:** The updated product line object.

**Example prompt that triggers it:**

```
Update the description for the [product line name] product line to: [new description].
```

***

### `delete_product_line`

Permanently deletes a product line. Requires admin role. Tagged entities are not deleted — they lose their product line tag but remain in the system.

**Required parameters:** `website_id`, `product_line_id`

**Response includes:** Confirmation with the count of entities that lost their tag assignment.

**Example prompt that triggers it:**

```
Delete the [product line name] product line from [website].
```

<Warning>This action is irreversible. Claude will ask for confirmation before calling this tool. Entities tagged to the deleted product line revert to unscoped.</Warning>

***

### `batch_tag_product_line`

Tags multiple entities with a product line ID in a single call. Accepts up to 50 entity IDs per call. Claude will automatically batch larger sets.

**Required parameters:** `website_id`, `product_line_id`, `entity_ids` (array), `entity_type` (e.g., `blog`, `ad`, `cta`, `keyword_cluster`)

**Response includes:** Count of successfully tagged entities, count of failures, and a list of any entity IDs that failed with reasons.

**Example prompt that triggers it:**

```
Tag all the [product name] blogs with the [product line name] product line.
```

<Tip>You can tag entities of different types in separate calls within the same conversation. Claude will track what it has and hasn't tagged and report a summary at the end.</Tip>

***

### `propose_classification`

Scans untagged entities of a given type and uses the product line descriptions and verticals to suggest product line assignments. Returns proposals with a confidence score — Claude will present these for your review before applying anything.

**Required parameters:** `website_id`, `entity_type`

**Optional parameters:** `limit` (default 50, max 200), `min_confidence` (default 0.6)

**Response includes:** An array of proposals, each with `entity_id`, `entity_name`, `proposed_product_line_id`, `confidence`, and `reasoning`.

**Example prompt that triggers it:**

```
Scan untagged blogs for [website] and suggest which product line each belongs to.
```

***

## Onboarding Tools

These tools are used during the onboarding flow to check setup status and load brand context. They are read-heavy — only `update_product_tone` writes data.

### `get_onboarding_status`

Returns a checklist of onboarding progress across all major setup areas. This is usually the first tool Claude calls when you ask about setup status or runner readiness.

**Required parameters:** `website_id`

**Response includes:** Status (`complete`, `partial`, `missing`) for integrations, brand voice, ICPs, offers, product lines, SEO module, operating context, and runner configuration. Each item includes a short explanation of what's missing when the status is not `complete`.

**Example prompt that triggers it:**

```
What's left in my onboarding for [website]?
```

***

### `get_data_health`

Returns data freshness and completeness metrics per connected source. Useful for understanding whether a runner has enough signal to produce quality output before you enable it.

**Required parameters:** `website_id`

**Response includes:** Per-source metrics including last sync timestamp, record count, freshness status (`fresh`, `stale`, `missing`), and a completeness percentage. Sources covered: Google Analytics, Google Search Console, Google Ads, Meta Ads, GHL Conversations, WordPress.

**Example prompt that triggers it:**

```
How fresh is the data for [website]? Are there any sources I should be concerned about?
```

***

### `get_brand_context`

Returns the complete brand context for a website or product line, including brand position, tone guidelines, detected messaging dimensions, and confirmed learnings. This is what runners load at the start of every execution.

**Required parameters:** `website_id`

**Optional parameters:** `product_line_id` (if provided, returns product-line-scoped context rather than site-wide)

**Response includes:** Brand name, positioning statement, tone settings, ICP summaries, active messaging dimensions (hooks, angles, offers), and recent confirmed learnings.

**Example prompt that triggers it:**

```
Show me the full brand context for [website].
```

```
Show me the brand context for the [product line name] product line.
```

***

### `update_product_tone`

Updates the tone context for a specific product line. This is separate from `update_product_line` — it targets only the tone fields and validates that the tone object is well-formed before writing.

**Required parameters:** `website_id`, `product_line_id`, `tone`

The `tone` object accepts: `voice` (string), `style` (string), `avoid` (array of strings), `examples` (array of strings).

**Response includes:** The updated tone object alongside the product line name and ID for confirmation.

**Example prompt that triggers it:**

```
Update the tone for [product line name] on [website]. The voice should be [description]. Avoid [list of things to avoid].
```

<Info>Tone changes take effect on the next runner execution. Running runners are not interrupted — the updated tone will apply to the next scheduled or triggered run.</Info>
