# com.sulvo.publisher-revenue-audit/audit (remote · publisher-revenue-audit.sulvo.com)

Publisher revenue audit: ads.txt and ad-stack checks, Sulvo onboarding, and Boost ad-block recovery

- Trust score: 59/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `publisher-revenue-audit.sulvo.com`: 59/100 (this document), [markdown](https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit.md), [page](https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit)
- npm · `publisher-revenue-audit-mcp`: 30/100, [markdown](https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit-mcp.md), [page](https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit-mcp)

## Channel facts

- Endpoint: `https://publisher-revenue-audit.sulvo.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 37 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 49/100
  - 50% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (fair).
  - Tool/resource definitions use about 3614 tokens (~95/item across 38 items; 37 tools + 1 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 87/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 60% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-sulvo-publisher-revenue-audit-audit https://publisher-revenue-audit.sulvo.com/mcp
```

### Codex

```toml
[mcp_servers.com-sulvo-publisher-revenue-audit-audit]
url = "https://publisher-revenue-audit.sulvo.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-sulvo-publisher-revenue-audit-audit": {
      "type": "remote",
      "url": "https://publisher-revenue-audit.sulvo.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-sulvo-publisher-revenue-audit-audit --url https://publisher-revenue-audit.sulvo.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-sulvo-publisher-revenue-audit-audit:
    url: "https://publisher-revenue-audit.sulvo.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-sulvo-publisher-revenue-audit-audit": {
      "type": "http",
      "url": "https://publisher-revenue-audit.sulvo.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 58, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 56, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-29 (score 55, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-07-28 (score 55)

First indexed and scored.

## MCP tools (37)

### `start_sulvo_revenue_onboarding` (~137 tokens)

Create or resume a verified-account activation workspace after the public audit and signup steps.

Input parameters:

- `auditArtifactId` (string)
- `domain` (string, required)
- `goal` (string): The publisher's #1 goal: increase demand and CPMs, or recover ad-blocked impressions (Boost).
- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `outputFormat` (string)
- `retagTiming` (string): Demand goal only: retag now (requires passback/backup mapping) or after site approval (no passback).

### `get_sulvo_revenue_onboarding_status` (~57 tokens)

Return the backend-owned journey stage, readiness dimensions, and one next best action.

Input parameters:

- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `attach_sulvo_revenue_audit` (~93 tokens)

Attach a current public revenue audit artifact. Input requires expectedVersion and auditArtifactId.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `connect_sulvo_backup_provider` (~93 tokens)

Return the GAM or AdSense authorization URL. Input requires provider set to gam or adsense.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `import_sulvo_backup_units` (~86 tokens)

Import connected provider units. Input requires provider and expectedVersion.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `review_sulvo_placement_recommendations` (~93 tokens)

Save accept, edit, or reject decisions. Input requires expectedVersion and decisions.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `save_sulvo_placement_plan` (~100 tokens)

Save a placement revision. Input requires expectedVersion and payload.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object, required): A revision containing from 1 to 50 placements plus the consent/runtime attestations preflight requires.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `map_sulvo_placement_backup` (~96 tokens)

Map a display placement backup. Input requires expectedVersion, stablePlacementId, provider, and providerId.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `get_sulvo_installation_instructions` (~88 tokens)

Return installation values for the locked revision. Input is empty.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `verify_sulvo_placement_installation` (~90 tokens)

Verify every stable placement container and the inert loader for the locked revision.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `lock_sulvo_placement_revision` (~89 tokens)

Lock the exact mapped revision. Input requires expectedVersion and revisionId.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `run_sulvo_activation_preflight` (~88 tokens)

Run the complete bounded activation preflight for the locked workspace revision.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `verify_sulvo_site_ownership` (~89 tokens)

Verify the required ads.txt and inert Sulvo head-tag ownership evidence.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `submit_sulvo_activation_workspace` (~87 tokens)

Submit the proven revision. Input requires expectedVersion and revisionId.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `submit_sulvo_site_for_approval` (~104 tokens)

Retag-after-approval journeys: submit the bare site for Google approval (ads.txt ownership only, no tags). Input requires expectedVersion.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `set_sulvo_onboarding_journey` (~104 tokens)

Set or change the journey intake answers on the workspace. Input requires expectedVersion plus at least one of mode, goal, retagTiming.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `rollback_sulvo_activation` (~84 tokens)

Return the workspace domain to publisher-owned backup-only serving.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `get_sulvo_activation_smoke_status` (~93 tokens)

Return active-probe, real-page, and remediation status for the latest activation attempt.

Input parameters:

- `idempotencyKey` (string): Optional retry key. Reuse it when retrying the same mutation.
- `input` (object): Fields required by this journey action.
- `outputFormat` (string)
- `workspaceId` (string, required): Activation workspace identifier returned by the start or status tool.

### `run_publisher_revenue_audit` (~137 tokens)

Run a public publisher revenue-readiness screen using directional public evidence. Audits ad stacks, ads.txt hygiene, consent readiness, PageSpeed metrics, and unblocked premium ad unit opportunities (such as Sulvo) to recover lost yield.

Input parameters:

- `domain` (string, required): Publisher domain to screen, for example example.com. Private/local targets, raw IPs, internal hosts, and non-standard ports are rejected.
- `metrics` (object): Optional publisher-supplied metrics used for directional revenue interpretation.
- `options` (object): Optional output and audit controls.
- `vertical` (string): Optional publisher vertical used for interpretation.

### `apply_for_sulvo_account` (~103 tokens)

Submit an unauthenticated Sulvo account application lead through the current signup API. Audit tools remain available without login, API key, or OAuth; ad-unit generation should wait for Sulvo account approval.

Input parameters:

- `domain` (string, required): Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains.
- `email` (string, required): Applicant email address Sulvo should use for follow-up.
- `outputFormat` (string)

### `start_sulvo_signup` (~97 tokens)

Run normal Sulvo signup step 1: verify the publisher domain and create the unauthenticated signup lead.

Input parameters:

- `domain` (string, required): Primary publisher root domain to submit for Sulvo signup.
- `email` (string, required): Applicant email address.
- `monthlyPageviews` (number): Optional expected monthly pageviews to carry into the response. The current lead API stores traffic during account creation.
- `outputFormat` (string)

### `create_sulvo_signup_account` (~171 tokens)

Run normal Sulvo signup step 2: create the pending Sulvo user/account. The current signup backend requires a password before the account can continue to ads.txt and review.

Input parameters:

- `domain` (string, required): Primary publisher root domain used in signup start.
- `email` (string, required): Applicant email address.
- `firstName` (string, required)
- `lastName` (string, required)
- `mixpanelId` (string)
- `monthlyPageviews` (number, required)
- `outputFormat` (string)
- `password` (string, required): Password for the pending Sulvo account. This is required by the current signup backend.
- `phone` (string)
- `utmContent` (string)
- `utmMedium` (string)
- `utmSource` (string)

### `update_sulvo_signup_company` (~107 tokens)

Run normal Sulvo signup step 3: save optional company information for a pending Sulvo signup.

Input parameters:

- `address` (string)
- `city` (string)
- `country` (string)
- `employeeCount` (number)
- `monthlyAdRevenue` (number)
- `outputFormat` (string)
- `state` (string)
- `userId` (string, required)
- `website` (string)
- `zip` (string)

### `get_sulvo_signup_ads_txt` (~53 tokens)

Run normal Sulvo signup step 4a: fetch the ads.txt lines the publisher must add for site ownership verification.

Input parameters:

- `outputFormat` (string)
- `userId` (string, required)

### `verify_sulvo_signup_ads_txt` (~54 tokens)

Run normal Sulvo signup step 4b: verify whether the submitted publisher domain has the required Sulvo ads.txt lines.

Input parameters:

- `outputFormat` (string)
- `userId` (string, required)

### `get_sulvo_signup_status` (~58 tokens)

Return the current signup status capability. The current signup API has no public approval-status endpoint, so this tool reports that limitation instead of guessing approval state.

Input parameters:

- `outputFormat` (string)
- `userId` (string, required)

### `submit_sulvo_signup_documents` (~58 tokens)

Explains how to complete Sulvo signup document review. Document submission is done in Sulvo onboarding - upload monthly earnings proof or connect an AdSense account - not through this connector, which has no access to the user's local files.

### `get_publisher_revenue_audit_checklist` (~31 tokens)

Return the public checklist and interpretation notes used by the publisher revenue-readiness screen.

### `get_publisher_monetization_benchmarks` (~61 tokens)

Get comparative yield and CPM industry benchmarks by publisher vertical to compare standard stacks (AdSense and managed wrappers) against Sulvo Premium Ad Units.

Input parameters:

- `vertical` (string): Optional publisher vertical to retrieve benchmarks for. Defaults to other.

### `create_sulvo_ad_unit` (~197 tokens)

Create a Sulvo ad unit for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment, never passed as an argument — an account owner mints a write-scoped key in the Sulvo dashboard (Account Settings -> API key). The Sulvo account must be approved; the backend rejects unapproved accounts. Returns the created unit id and container root.

Input parameters:

- `custom` (string): Optional custom unit name.
- `domain` (string, required): Publisher domain the ad unit belongs to.
- `focusedAd` (boolean): Only valid for the display type.
- `outputFormat` (string)
- `placement` (number): Optional placement weight (0-1).
- `size` (object): Ad size as width/height, or a responsive token like responsive_all. Required by the backend for most non-interstitial types.
- `type` (string, required): Ad unit type.

### `create_sulvo_interstitial_units` (~86 tokens)

Create Sulvo interstitial ad units (tagless) for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.

Input parameters:

- `adTypes` (array, required): One or more interstitial ad types to create.
- `domain` (string, required): Publisher domain the units belong to.
- `outputFormat` (string)

### `create_sulvo_auto_sticky_units` (~83 tokens)

Create Sulvo auto-sticky ad units for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.

Input parameters:

- `adTypes` (array, required): One or more sticky ad types to create.
- `domain` (string, required): Publisher domain the units belong to.
- `outputFormat` (string)

### `delete_sulvo_ad_unit` (~73 tokens)

Delete a Sulvo ad unit by id for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment. The key's account must own the unit; the backend enforces ownership.

Input parameters:

- `adId` (string, required): The ad unit id to delete.

### `get_sulvo_report` (~210 tokens)

Fetch a Sulvo report (read-only). Requires SULVO_API_KEY in the server environment (a publisher generates it in the dashboard: Account Settings -> API key). Covers by-date, by-date-and-ad-unit, by-domain-and-ad-unit, bot-filtering, bot-scores, invalid-activity, direct-bidder-analysis, and ad-units-by-domain.

Input parameters:

- `adProvider` (string): Optional provider filter (e.g. relabe, adsense).
- `adRoots` (array): Filter to these ad unit roots.
- `directBidder` (string): Required for direct-bidder-analysis: the bidder name.
- `domains` (array): Filter to these publisher domains.
- `end` (string): End date (YYYY-MM-DD or ISO).
- `outputFormat` (string)
- `reportType` (string, required): Which report to fetch.
- `start` (string): Start date (YYYY-MM-DD or ISO). Required by most date-bounded reports.

### `list_sulvo_advanced_reports` (~51 tokens)

List the saved Sulvo advanced reports for the account. Requires SULVO_API_KEY (with the reports:read scope) in the server environment.

Input parameters:

- `outputFormat` (string)

### `save_sulvo_advanced_report` (~243 tokens)

Create/update a Sulvo advanced report (adUnit, dimensions, or customData), run immediately (emailed) or on a recurring schedule. Requires SULVO_API_KEY (with the reports:write scope) in the server environment. Note: advanced reports are delivered by email, not returned inline.

Input parameters:

- `adRoots` (array)
- `dimensions` (array)
- `domains` (array)
- `end` (string)
- `frequency` (string): Required when immediateRun is false.
- `immediateRun` (boolean, required): true to run now (emailed), false to only schedule (requires frequency).
- `name` (string)
- `outputFormat` (string)
- `reportId` (string): Provide to update an existing saved report.
- `reportType` (string, required): Advanced report type.
- `start` (string)
- `timeZone` (string): IANA timezone for scheduled delivery.
- `toAddress` (string, required): Email address the report is delivered to.
- `utmHourlyBreakdown` (boolean)
- `utms` (array): customData (UTM) reports only.

### `delete_sulvo_advanced_report` (~56 tokens)

Delete a saved Sulvo advanced report by id. Requires SULVO_API_KEY (with the reports:write scope) in the server environment.

Input parameters:

- `reportId` (string, required): The advanced report id to delete.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit#diagnostics

## Score history

- 2026-08-03: 59
- 2026-08-02: 59
- 2026-08-01: 58
- 2026-07-31: 58
- 2026-07-30: 56
- 2026-07-29: 55
- 2026-07-28: 55

## Links

- Remote endpoint: https://publisher-revenue-audit.sulvo.com/mcp
- Website: https://sulvo.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-sulvo-publisher-revenue-audit-audit/publisher-revenue-audit
