# Scoring tools

Two read-only tools let an assistant evaluate the citation value of a domain or a prospective placement:

- `score_publisher_value` — the **AI Placement Value Score (AIPVS)** for one or more publisher domains.
- `score_placement_quality` — the **AI Placement Quality Score (PQS)** for a prospective placement, optionally combined with a publisher's AIPVS.

Both are **read-only**: scoring never creates a publisher record, edits anything, or queues enrichment. When a domain hasn't been enriched yet, the score comes back as an estimate flagged with `needsEnrichment: true`.

## `score_publisher_value` (AIPVS)

Scores one or more publisher domains 0–100 — how valuable a citation from that domain is for AI visibility. AIPVS combines three layers: **organic authority**, **AI citation accessibility**, and **AI training influence**.

| Parameter | Type | Notes |
|---|---|---|
| `domains` | string[] | 1–10 publisher domains to score. |
| `propertyId` | string (optional) | Score in this property's brand context — adds category relevance and brand uplift. From `list_properties`. |

Each result includes the publisher's **score**, **tier**, **AI impact multiplier**, per-layer detail, and `needsEnrichment`. Passing a `propertyId` scores each publisher *for that brand* (category fit and brand-specific uplift); omitting it scores in general.

<Callout>
Any publisher flagged `needsEnrichment: true` has an **estimated** score until it's enriched. Treat those as directional.
</Callout>

For the full methodology, see [AI Placement Value Score](/docs/methodology/ai-placement-value-score).

## `score_placement_quality` (PQS)

Scores a **prospective** placement 0–100 — how much citation value a placement would earn, given its type, position, editorial control, and link attribute. Pass a `publisherDomain` (and optionally `propertyId`) to also compute that publisher's AIPVS and the **combined total placement value** (AIPVS × PQS ÷ 100).

| Parameter | Type | Notes |
|---|---|---|
| `placementType` | enum | Where/how the brand appears on the page (see below). |
| `editorialControl` | enum | How much control the brand has over the content. |
| `linkAttribute` | enum | The link's `rel` attribute. |
| `assumedPosition` | number (optional) | Position on the page, `0` = top … `1` = bottom (default `0.15`). |
| `publisherDomain` | string (optional) | Also compute this publisher's AIPVS and the total placement value. |
| `propertyId` | string (optional) | Brand context for the AIPVS layer. From `list_properties`. |

### Accepted values

| `placementType` | `editorialControl` | `linkAttribute` |
|---|---|---|
| `dedicated_article` | `full_authorship` | `dofollow` |
| `roundup_top` | `collaborative` | `nofollow` |
| `roundup_top_third` | `quoted` | `sponsored` |
| `roundup_middle_third` | `mentioned` | `ugc` |
| `roundup_bottom_third` | `unpredictable` | `no_link` |
| `passing_mention` | | |
| `sidebar_widget_biobox` | | |
| `quote_only` | | |

The result returns the `pqs` (with per-sub-score detail and the effective weights) and, when a `publisherDomain` is given, the publisher's `aipvs` and the combined `totalPlacementValue`. Without a `publisherDomain`, `aipvs` and `totalPlacementValue` are `null`.

For the full methodology, see [AI Placement Quality Score](/docs/methodology/ai-placement-quality-score).

## When to use which

- **"Is this outlet worth pitching?"** → `score_publisher_value` on the domain(s), ideally with your `propertyId` for brand context.
- **"How good would *this specific* placement be?"** → `score_placement_quality` with the placement's shape, plus `publisherDomain` to fold in the outlet's value and get a single total.

## Related

- [AI Placement Value Score methodology](/docs/methodology/ai-placement-value-score)
- [AI Placement Quality Score methodology](/docs/methodology/ai-placement-quality-score)
- [Publisher Lookup dashboard](/docs/dashboards/publisher-lookup) · [Placements dashboard](/docs/dashboards/placements)
- [Prompts](/docs/mcp/prompts) — the `evaluate_publishers` prompt drives `score_publisher_value`
