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

# Strategic Tools

> Tools for brand perception, technical status, prompt signals, and Action Center recommendations.

## get\_content\_opportunities

Surface content gaps for the brand: monitored questions where competitors are mentioned but the brand is not, monitored questions with low brand visibility, and the top competitor threats. Use it to prioritize content production.

### Parameters

| Parameter | Type   | Required | Description                               |
| --------- | ------ | -------- | ----------------------------------------- |
| `brandId` | string | Yes      | The brand ID from `list_brands`           |
| `period`  | number | No       | Number of days to analyze (default: 30)   |
| `limit`   | number | No       | Max opportunities to return (default: 10) |

### Returns

| Field                      | Description                                                                                                                 |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `period` / `periodLabel`   | The analyzed window                                                                                                         |
| `missedOpportunities[]`    | Questions where competitors appear but the brand does not: `question`, `keyword`, `competitorsMentioned[]`                  |
| `lowVisibilityQuestions[]` | Questions with under 30% brand visibility: `question`, `keyword`, `type`, `totalAnswers`, `brandMentions`, `visibilityRate` |
| `competitorThreats[]`      | Competitors most often present where the brand is missing: `name`, `mentionsWhereWeMiss`                                    |
| `summary`                  | `totalMissedOpportunities`, `totalLowVisibilityQuestions`, `topThreat`, `actionNeeded`                                      |

### Example Prompts

```
Where should I create content to win more AI mentions?
```

```
Which questions am I losing to competitors?
```

### OAuth Scope

Requires: `read:visibility`

***

## get\_brand\_perception

Get the latest brand perception snapshot: sentiment, alignment, consistency, factual-alignment scores, and SWOT insights (strengths, weaknesses, opportunities, threats). Returns only the most recent snapshot. For evolution over time, use `get_perception_history`.

### Parameters

| Parameter | Type   | Required | Description                     |
| --------- | ------ | -------- | ------------------------------- |
| `brandId` | string | Yes      | The brand ID from `list_brands` |

### Returns

| Field                       | Description                                                |
| --------------------------- | ---------------------------------------------------------- |
| `snapshot.sentimentScore`   | Overall sentiment score                                    |
| `snapshot.alignmentScore`   | Alignment with brand positioning                           |
| `snapshot.consistencyScore` | Consistency across AI providers                            |
| `snapshot.factualAlignment` | Alignment with known brand facts (description, attributes) |
| `strengths[]`               | Brand strengths identified by AI                           |
| `weaknesses[]`              | Areas of improvement                                       |
| `opportunities[]`           | Growth opportunities                                       |
| `threats[]`                 | Potential threats                                          |

### OAuth Scope

Requires: `read:visibility`

***

## get\_perception\_history

Get the evolution of the brand's perception snapshots over time: sentiment, alignment, consistency, and factual-alignment scores plus SWOT insights for each historical snapshot. For only the latest snapshot, use `get_brand_perception`.

### Parameters

| Parameter | Type   | Required | Description                                    |
| --------- | ------ | -------- | ---------------------------------------------- |
| `brandId` | string | Yes      | The brand ID from `list_brands`                |
| `limit`   | number | No       | Max snapshots to return (default: 10, max: 20) |

### Returns

| Field            | Description                                                                                                                                                                     |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `brand`          | `id`, `name`                                                                                                                                                                    |
| `totalSnapshots` | Total snapshots available for the brand                                                                                                                                         |
| `snapshots[]`    | Per snapshot: `month`, `year`, `sentimentScore`, `alignmentScore`, `consistencyScore`, `factualAlignment`, and the `strengths`, `weaknesses`, `opportunities`, `threats` arrays |

### Example Prompts

```
How has my brand perception changed over time?
```

```
Show me my sentiment and alignment scores month by month
```

### OAuth Scope

Requires: `read:visibility`

***

## get\_technical\_status

Get technical SEO status: AI Readiness Score, robots.txt, llms.txt, sitemap.xml analysis, blocked AI crawlers, and open page issues by severity.

### Parameters

| Parameter | Type   | Required | Description                     |
| --------- | ------ | -------- | ------------------------------- |
| `brandId` | string | Yes      | The brand ID from `list_brands` |

### Returns

| Field                         | Description                                                 |
| ----------------------------- | ----------------------------------------------------------- |
| `technical.aiReadinessScore`  | AI Readiness Score (0-100), same value as the dashboard     |
| `technical.robotsStatus`      | robots.txt analysis status                                  |
| `technical.llmsStatus`        | llms.txt analysis status                                    |
| `technical.sitemapStatus`     | sitemap.xml analysis status                                 |
| `technical.blockedCrawlers[]` | AI crawlers blocked by robots.txt                           |
| `issues`                      | Open issues count by severity (critical, high, medium, low) |
| `topIssues[]`                 | Most important open issues                                  |

### OAuth Scope

Requires: `read:visibility`

***

## get\_prompt\_signals

Get prompt signal analysis: attack/defend/monitor/ignore labels based on Share of Voice and market openness. Identifies which prompts to invest in. Supports period, provider, topic, and tag filters.

### Parameters

| Parameter   | Type      | Required | Description                                                               |
| ----------- | --------- | -------- | ------------------------------------------------------------------------- |
| `brandId`   | string    | Yes      | The brand ID from `list_brands`                                           |
| `period`    | number    | No       | Number of days to analyze (e.g. `1`, `7`, `14`, `30`). Omit for all time. |
| `startDate` | string    | No       | Start date in YYYY-MM-DD format                                           |
| `endDate`   | string    | No       | End date in YYYY-MM-DD format                                             |
| `providers` | string\[] | No       | Filter by provider slugs (e.g. `["openai", "anthropic"]`)                 |
| `topicIds`  | string\[] | No       | Filter by topic/keyword IDs                                               |
| `tagIds`    | string\[] | No       | Filter by tag IDs                                                         |
| `limit`     | number    | No       | Max prompts per category (default: 5)                                     |

### Returns

| Field                    | Description                                                                      |
| ------------------------ | -------------------------------------------------------------------------------- |
| `summary.attackCount`    | Prompts where market is open and brand is underrepresented                       |
| `summary.defendCount`    | Prompts where brand has strong position to defend                                |
| `summary.monitorCount`   | Prompts to keep watching                                                         |
| `summary.ignoreCount`    | Low-priority prompts                                                             |
| `summary.avgOpenness`    | Average market openness (0-1)                                                    |
| `summary.visibilityRate` | Percentage of prompts where brand is visible                                     |
| `summary.avgSoV`         | Average Share of Voice across visible prompts                                    |
| `summary.totalPrompts`   | Total prompts analyzed                                                           |
| `topAttackPrompts[]`     | Best attack opportunities: includes `priorityScore`, `visibilityPct`, `quadrant` |
| `topDefendPrompts[]`     | Positions to defend: includes `priorityScore`, `visibilityPct`, `quadrant`       |

### OAuth Scope

Requires: `read:prompts`

***

## get\_site\_diagnostics

Per-page site health for the brand's monitored pages: latest technical, content, AEO, and performance scores plus open issue counts by severity, with brand-level averages. Complements `get_technical_status` (brand-wide) with a page-by-page view.

### Parameters

| Parameter | Type   | Required | Description                                 |
| --------- | ------ | -------- | ------------------------------------------- |
| `brandId` | string | Yes      | The brand ID from `list_brands`             |
| `limit`   | number | No       | Max pages to return (default: 25, max: 100) |

### Returns

| Field     | Description                                                                                                                                                                                                                   |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `summary` | `totalPages`, `pagesAudited`, `pagesWithIssues`, `avgTechnicalScore`, `avgContentScore`, `avgAeoScore`, `avgPerformanceScore`                                                                                                 |
| `pages[]` | Per page: `url`, `title`, `technicalScore`, `contentScore`, `aeoScore`, `performanceScore`, `issues` (`critical`/`high`/`medium`/`low`/`total`), `status`, `lastAuditAt`. Sorted worst-first (unaudited, then lowest scores). |

### Example Prompts

```
Which of my pages have the worst technical health?
```

```
Show me pages with open critical issues
```

### OAuth Scope

Requires: `read:visibility`

***

## get\_actions

Return the Action Center's prioritized recommendation queue: deterministic actions with a 3-tier priority label, a 1-5 demand badge, the quantified "why", the target engine when relevant, effort and a step-by-step checklist.

<Note>
  **Private beta.** The Action Center must be enabled for the team; otherwise the tool returns a `FORBIDDEN` error.
</Note>

### Parameters

| Parameter  | Type   | Required | Description                                                                                                                                |
| ---------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `brandId`  | string | Yes      | The brand ID from `list_brands`                                                                                                            |
| `actionId` | string | No       | Fetch one specific action by ID, regardless of status (full context: signals, why, checklist)                                              |
| `status`   | string | No       | `SUGGESTED`, `PENDING`, `IN_PROGRESS`, `COMPLETED`, `DISMISSED`, `RESOLVED`. Default: live queue (`SUGGESTED` + `PENDING` + `IN_PROGRESS`) |
| `type`     | string | No       | Filter by action type (e.g. `CONTENT_GAP`, `TECHNICAL_FIX`, `SOURCE_OUTREACH`)                                                             |
| `category` | string | No       | `TECHNICAL`, `CONTENT`, `AEO`, `AUTHORITY`, `VISIBILITY`                                                                                   |
| `limit`    | number | No       | Max actions to return (default: 25, max: 100)                                                                                              |

### Returns

| Field       | Description                                                                                                                                                                                                                                                                                                                                             |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `total`     | Total actions matching the filters                                                                                                                                                                                                                                                                                                                      |
| `actions[]` | Prioritized actions: `id`, `type`, `category`, `sourceType` (detector family), `scope` (`ON_SITE` / `OFF_SITE` / `SETUP`), `title`, `description`, `sourceUrl`, `targetProvider`, `forceTier` (`CRITICAL` / `HIGH` / `STANDARD`), `demandBadge` (1-5), `isQuickWin`, `effort`, `status`, `why`, `signals`, `target` (`baseline`, `goal`), `checklist[]` |

### Example Prompts

```
What should I work on next to improve my AI visibility?
```

```
Show me the critical actions in my queue
```

### OAuth Scope

Requires: `read:visibility`
