Publisher revenue audit: ads.txt and ad-stack checks, Sulvo onboarding, and Boost ad-block recovery
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Applicant email address Sulvo should use for follow-up.
Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Tool list last changed Oct 25, 2026.
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.
| Argument | Type | Description |
|---|---|---|
| email* | string | Applicant email address Sulvo should use for follow-up. |
| domain* | string | Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains. |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain",
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Applicant email address Sulvo should use for follow-up."
},
"domain": {
"type": "string",
"minLength": 1,
"description": "Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}Attach a current public revenue audit artifact. Input requires expectedVersion and auditArtifactId.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Check whether robots.txt or a live probe blocks AmazonAdBot / Google ad crawlers. robots.txt Disallow and Amazon Crawl-delay are high-confidence fails. A WAF 403 against our scanner is a medium-confidence warn that needs verification.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Publisher domain, for example example.com. |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "Publisher domain, for example example.com."
},
"outputFormat": {
"enum": [
"markdown",
"json",
"csv"
],
"type": "string",
"default": "markdown"
}
}
}Check a publisher domain for HTTPS and certificate issues: expired/untrusted/hostname-mismatch certs, HTTPS down, HTTP that does not upgrade, and certs expiring within 14 days. Does not write a finding when both HTTP and HTTPS are unreachable.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Publisher domain, for example example.com. |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "Publisher domain, for example example.com."
},
"outputFormat": {
"enum": [
"markdown",
"json",
"csv"
],
"type": "string",
"default": "markdown"
}
}
}Return the GAM or AdSense authorization URL. Input requires provider set to gam or adsense.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| 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 | Ad unit type. |
| custom | string | Optional custom unit name. |
| domain* | string | Publisher domain the ad unit belongs to. |
| focusedAd | boolean | Only valid for the display type. |
| placement | number | Optional placement weight (0-1). |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain",
"type"
],
"properties": {
"size": {
"type": "object",
"properties": {
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"responsive": {
"type": "string",
"minLength": 1
}
},
"description": "Ad size as width/height, or a responsive token like responsive_all. Required by the backend for most non-interstitial types."
},
"type": {
"enum": [
"display",
"native_multi",
"sticky_display",
"sticky_mobile",
"sticky_display_custom",
"sticky_mobile_custom",
"sticky_video",
"interstitial_desktop",
"interstitial_mobile",
"offerwall"
],
"type": "string",
"description": "Ad unit type."
},
"custom": {
"type": "string",
"minLength": 1,
"description": "Optional custom unit name."
},
"domain": {
"type": "string",
"minLength": 1,
"description": "Publisher domain the ad unit belongs to."
},
"focusedAd": {
"type": "boolean",
"description": "Only valid for the display type."
},
"placement": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional placement weight (0-1)."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}Create Sulvo auto-sticky ad units for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Publisher domain the units belong to. |
| adTypes* | array | One or more sticky ad types to create. |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain",
"adTypes"
],
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "Publisher domain the units belong to."
},
"adTypes": {
"type": "array",
"items": {
"enum": [
"sticky_display",
"sticky_mobile"
],
"type": "string"
},
"minItems": 1,
"description": "One or more sticky ad types to create."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}Create Sulvo interstitial ad units (tagless) for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Publisher domain the units belong to. |
| adTypes* | array | One or more interstitial ad types to create. |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain",
"adTypes"
],
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "Publisher domain the units belong to."
},
"adTypes": {
"type": "array",
"items": {
"enum": [
"interstitial_desktop",
"interstitial_mobile"
],
"type": "string"
},
"minItems": 1,
"description": "One or more interstitial ad types to create."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| email* | string | Applicant email address. |
| phone | string | |
| domain* | string | Primary publisher root domain used in signup start. |
| lastName* | string | |
| password* | string | Password for the pending Sulvo account. This is required by the current signup backend. |
| firstName* | string | |
| utmMedium | string | |
| utmSource | string | |
| mixpanelId | string | |
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.
| Argument | Type | Description |
|---|---|---|
| adId* | string | The ad unit id to delete. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"adId"
],
"properties": {
"adId": {
"type": "string",
"minLength": 1,
"description": "The ad unit id to delete."
}
}
}Delete a saved Sulvo advanced report by id. Requires SULVO_API_KEY (with the reports:write scope) in the server environment.
| Argument | Type | Description |
|---|---|---|
| reportId* | string | The advanced report id to delete. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"reportId"
],
"properties": {
"reportId": {
"type": "string",
"minLength": 1,
"description": "The advanced report id to delete."
}
}
}Get comparative yield and CPM industry benchmarks by publisher vertical to compare standard stacks (AdSense and managed wrappers) against Sulvo Premium Ad Units.
| Argument | Type | Description |
|---|---|---|
| vertical | string | Optional publisher vertical to retrieve benchmarks for. Defaults to other. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"vertical": {
"enum": [
"news",
"sports",
"entertainment",
"technology",
"education",
"gaming",
"other"
],
"type": "string",
"description": "Optional publisher vertical to retrieve benchmarks for. Defaults to other."
}
}
}Return the public checklist and interpretation notes used by the publisher revenue-readiness screen.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Return active-probe, real-page, and remediation status for the latest activation attempt.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Instructions for setting up Sulvo Boost: first-party serving from the publisher's own CDN that recovers ad-blocked impressions. Covers Cloudflare, AWS and Fastly, plus the WordPress plugin for publishers who would rather not use a terminal.
| Argument | Type | Description |
|---|---|---|
| cdn | string | The CDN fronting the site; omit to get all three options. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cdn": {
"enum": [
"cloudflare",
"aws",
"fastly"
],
"type": "string",
"description": "The CDN fronting the site; omit to get all three options."
}
}
}Return installation values for the locked revision. Input is empty.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| end | string | End date (YYYY-MM-DD or ISO). |
| start | string | Start date (YYYY-MM-DD or ISO). Required by most date-bounded reports. |
| adRoots | array | Filter to these ad unit roots. |
| domains | array | Filter to these publisher domains. |
| adProvider | string | Optional provider filter (e.g. relabe, adsense). |
| reportType* | string | Which report to fetch. |
| directBidder | string | Required for direct-bidder-analysis: the bidder name. |
| outputFormat | string |
Return the backend-owned journey stage, readiness dimensions, and one next best action.
| Argument | Type | Description |
|---|---|---|
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}Run normal Sulvo signup step 4a: fetch the ads.txt lines the publisher must add for site ownership verification.
| Argument | Type | Description |
|---|---|---|
| userId* | string | |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"userId"
],
"properties": {
"userId": {
"type": "string",
"minLength": 1
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| userId* | string | |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"userId"
],
"properties": {
"userId": {
"type": "string",
"minLength": 1
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}Import connected provider units. Input requires provider and expectedVersion.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}List the saved Sulvo advanced reports for the account. Requires SULVO_API_KEY (with the reports:read scope) in the server environment.
| Argument | Type | Description |
|---|---|---|
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"outputFormat": {
"enum": [
"markdown",
"json",
"csv"
],
"type": "string",
"default": "markdown"
}
}
}Lock the exact mapped revision. Input requires expectedVersion and revisionId.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Map a display placement backup. Input requires expectedVersion, stablePlacementId, provider, and providerId.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Save accept, edit, or reject decisions. Input requires expectedVersion and decisions.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Return the workspace domain to publisher-owned backup-only serving.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Free top-of-funnel scan: could a buyer agent find and buy this publisher? Checks adagents.json, standardized taxonomy tagging, audience segments in a readable schema, and a product/deals catalog. Returns what a buyer agent would see and what it cannot.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Publisher domain, for example example.com. |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "Publisher domain, for example example.com."
},
"outputFormat": {
"enum": [
"markdown",
"json",
"csv"
],
"type": "string",
"default": "markdown"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| domain* | string | 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. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "Publisher domain to screen, for example example.com. Private/local targets, raw IPs, internal hosts, and non-standard ports are rejected."
},
"metrics": {
"type": "object",
"properties": {
"fillRate": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"averageCpm": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"monthlySessions": {
"type": "number",
"maximum": 1000000000000,
"description": "Actual monthly session count. Used with pageviewsPerSession to derive scale when monthlyPageviews is not supplied directly.",
"exclusiveMinimum": 0
},
"monthlyPageviews": {
"type": "number",
"maximum": 1000000000000,
"description": "Actual monthly pageview volume. When provided, the yield simulator uses this scale instead of the standard 100k baseline.",
"exclusiveMinimum": 0
},
"revenuePerSession": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"pageviewsPerSession": {
"type": "number",
"maximum": 100000,
"exclusiveMinimum": 0
},
"impressionsPerSession": {
"type": "number",
"maximum": 1000,
"exclusiveMinimum": 0
},
"impressionsPerPageview": {
"type": "number",
"maximum": 100,
"exclusiveMinimum": 0
},
"dashboardViewabilityRate": {
"type": "number",
"maximum": 100,
"minimum": 0
}
},
"description": "Optional publisher-supplied metrics used for directional revenue interpretation."
},
"options": {
"type": "object",
"properties": {
"format": {
"enum": [
"markdown",
"json",
"markdown_and_json"
],
"type": "string",
"default": "markdown"
},
"compact": {
"type": "boolean",
"default": false,
"description": "When true with JSON output, return the compact agent-oriented report shape instead of the full report object."
},
"maxPages": {
"type": "integer",
"default": 2,
"maximum": 5,
"minimum": 1
},
"partnerId": {
"type": "string",
"description": "Optional referral or partner tracking identifier embedded in call-to-action URLs."
},
"whiteLabel": {
"type": "boolean",
"default": false,
"description": "When true, format the audit report as a white-labeled pitch presentation for ad-ops consultants/agencies to present directly to their publisher clients."
},
"concurrency": {
"type": "integer",
"default": 2,
"maximum": 5,
"minimum": 1,
"description": "Maximum number of audit collection tasks to run at once."
},
"artifactsDir": {
"type": "string",
"default": "audit-artifacts",
"minLength": 1,
"description": "Relative directory for optional artifacts. Absolute paths, current-directory output, and parent traversal are rejected."
},
"enableBrowser": {
"type": "boolean",
"default": false,
"description": "When true, run optional Playwright diagnostics for rendered slots, provider-aware network/console errors, selected provider privacy-review signals, and bfcache signals."
},
"enablePageSpeed": {
"type": "boolean",
"default": false,
"description": "When true, request public PageSpeed/Core Web Vitals diagnostics."
},
"includeEvidence": {
"type": "boolean",
"default": true
},
"pageSpeedStrategy": {
"enum": [
"mobile",
"desktop"
],
"type": "string",
"default": "mobile"
},
"includeScreenshots": {
"type": "boolean",
"default": false,
"description": "When true with enableBrowser, save a full-page screenshot artifact using a relative artifact path."
}
},
"description": "Optional output and audit controls."
},
"vertical": {
"enum": [
"news",
"sports",
"entertainment",
"technology",
"education",
"gaming",
"other"
],
"type": "string",
"description": "Optional publisher vertical used for interpretation."
}
}
}Run the complete bounded activation preflight for the locked workspace revision.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| end | string | |
| name | string | |
| utms | array | customData (UTM) reports only. |
| start | string | |
| adRoots | array | |
| domains | array | |
| reportId | string | Provide to update an existing saved report. |
| timeZone | string | IANA timezone for scheduled delivery. |
| frequency | string | Required when immediateRun is false. |
| toAddress* |
Save a placement revision. Input requires expectedVersion and payload.
| Argument | Type | Description |
|---|---|---|
| input* | object | A revision containing from 1 to 50 placements plus the consent/runtime attestations preflight requires. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId",
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"expectedVersion",
"payload"
],
"properties": {
"payload": {
"type": "object",
"required": [
"placements"
],
"properties": {
"placements": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"maxItems": 50,
"minItems": 1
},
"consentDeclaration": {
"type": "boolean",
"description": "Attest that consent requirements are accounted for. Preflight requires true."
},
"runtimeDeclaration": {
"type": "boolean",
"description": "Attest that runtime placement behavior has been reviewed. Preflight requires true."
}
},
"additionalProperties": {}
},
"expectedVersion": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
},
"description": "A revision containing from 1 to 50 placements plus the consent/runtime attestations preflight requires.",
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Set or change the journey intake answers on the workspace. Input requires expectedVersion plus at least one of mode, goal, retagTiming.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Create or resume a verified-account activation workspace after the public audit and signup steps.
| Argument | Type | Description |
|---|---|---|
| goal | string | The publisher's #1 goal: increase demand and CPMs, or recover ad-blocked impressions (Boost). |
| domain* | string | |
| retagTiming | string | Demand goal only: retag now (requires passback/backup mapping) or after site approval (no passback). |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
| auditArtifactId | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"goal": {
"enum": [
"demand",
"adblock_recovery"
],
"type": "string",
"description": "The publisher's #1 goal: increase demand and CPMs, or recover ad-blocked impressions (Boost)."
},
"domain": {
"type": "string",
"maxLength": 253,
"minLength": 1
},
"retagTiming": {
"enum": [
"now",
"after_approval"
],
"type": "string",
"description": "Demand goal only: retag now (requires passback/backup mapping) or after site approval (no passback)."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"auditArtifactId": {
"type": "string",
"maxLength": 8192,
"minLength": 1
}
}
}Run normal Sulvo signup step 1: verify the publisher domain and create the unauthenticated signup lead.
| Argument | Type | Description |
|---|---|---|
| email* | string | Applicant email address. |
| domain* | string | Primary publisher root domain to submit for Sulvo signup. |
| outputFormat | string | |
| monthlyPageviews | number | Optional expected monthly pageviews to carry into the response. The current lead API stores traffic during account creation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain",
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Applicant email address."
},
"domain": {
"type": "string",
"minLength": 1,
"description": "Primary publisher root domain to submit for Sulvo signup."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"monthlyPageviews": {
"type": "number",
"description": "Optional expected monthly pageviews to carry into the response. The current lead API stores traffic during account creation.",
"exclusiveMinimum": 0
}
}
}Submit the proven revision. Input requires expectedVersion and revisionId.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}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.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Retag-after-approval journeys: submit the bare site for Google approval (ads.txt ownership only, no tags). Input requires expectedVersion.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Run normal Sulvo signup step 3: save optional company information for a pending Sulvo signup.
| Argument | Type | Description |
|---|---|---|
| zip | string | |
| city | string | |
| state | string | |
| userId* | string | |
| address | string | |
| country | string | |
| website | string | |
| outputFormat | string | |
| employeeCount | number | |
| monthlyAdRevenue | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"userId"
],
"properties": {
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"userId": {
"type": "string",
"minLength": 1
},
"address": {
"type": "string"
},
"country": {
"type": "string"
},
"website": {
"type": "string"
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"employeeCount": {
"type": "number",
"exclusiveMinimum": 0
},
"monthlyAdRevenue": {
"type": "number",
"exclusiveMinimum": 0
}
}
}Verify every stable placement container and the inert loader for the locked revision.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}Run normal Sulvo signup step 4b: verify whether the submitted publisher domain has the required Sulvo ads.txt lines.
| Argument | Type | Description |
|---|---|---|
| userId* | string | |
| outputFormat | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"userId"
],
"properties": {
"userId": {
"type": "string",
"minLength": 1
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
}
}
}Verify the required ads.txt and inert Sulvo head-tag ownership evidence.
| Argument | Type | Description |
|---|---|---|
| input | object | Fields required by this journey action. |
| workspaceId* | string | Activation workspace identifier returned by the start or status tool. |
| outputFormat | string | |
| idempotencyKey | string | Optional retry key. Reuse it when retrying the same mutation. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"input": {
"type": "object",
"default": {},
"description": "Fields required by this journey action.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"workspaceId": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Activation workspace identifier returned by the start or status tool."
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"idempotencyKey": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Optional retry key. Reuse it when retrying the same mutation."
}
}
}| utmContent |
| string |
| outputFormat | string |
| monthlyPageviews* | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain",
"email",
"firstName",
"lastName",
"password",
"monthlyPageviews"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Applicant email address."
},
"phone": {
"type": "string"
},
"domain": {
"type": "string",
"minLength": 1,
"description": "Primary publisher root domain used in signup start."
},
"lastName": {
"type": "string",
"maxLength": 30,
"minLength": 1
},
"password": {
"type": "string",
"minLength": 6,
"description": "Password for the pending Sulvo account. This is required by the current signup backend."
},
"firstName": {
"type": "string",
"maxLength": 30,
"minLength": 1
},
"utmMedium": {
"type": "string"
},
"utmSource": {
"type": "string"
},
"mixpanelId": {
"type": "string"
},
"utmContent": {
"type": "string"
},
"outputFormat": {
"enum": [
"markdown",
"json"
],
"type": "string",
"default": "markdown"
},
"monthlyPageviews": {
"type": "number",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"reportType"
],
"properties": {
"end": {
"type": "string",
"description": "End date (YYYY-MM-DD or ISO)."
},
"start": {
"type": "string",
"description": "Start date (YYYY-MM-DD or ISO). Required by most date-bounded reports."
},
"adRoots": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to these ad unit roots."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to these publisher domains."
},
"adProvider": {
"type": "string",
"description": "Optional provider filter (e.g. relabe, adsense)."
},
"reportType": {
"enum": [
"by-date",
"by-date-and-ad-unit",
"by-domain-and-ad-unit",
"bot-filtering",
"bot-scores",
"invalid-activity",
"direct-bidder-analysis",
"ad-units-by-domain"
],
"type": "string",
"description": "Which report to fetch."
},
"directBidder": {
"type": "string",
"description": "Required for direct-bidder-analysis: the bidder name."
},
"outputFormat": {
"enum": [
"markdown",
"json",
"csv"
],
"type": "string",
"default": "markdown"
}
}
}| string |
| Email address the report is delivered to. |
| dimensions | array |
| reportType* | string | Advanced report type. |
| immediateRun* | boolean | true to run now (emailed), false to only schedule (requires frequency). |
| outputFormat | string |
| utmHourlyBreakdown | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"reportType",
"toAddress",
"immediateRun"
],
"properties": {
"end": {
"type": "string"
},
"name": {
"type": "string"
},
"utms": {
"type": "array",
"items": {
"type": "string"
},
"description": "customData (UTM) reports only."
},
"start": {
"type": "string"
},
"adRoots": {
"type": "array",
"items": {
"type": "string"
}
},
"domains": {
"type": "array",
"items": {
"type": "string"
}
},
"reportId": {
"type": "string",
"description": "Provide to update an existing saved report."
},
"timeZone": {
"type": "string",
"description": "IANA timezone for scheduled delivery."
},
"frequency": {
"enum": [
"daily",
"weekly",
"biweekly",
"monthly"
],
"type": "string",
"description": "Required when immediateRun is false."
},
"toAddress": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Email address the report is delivered to."
},
"dimensions": {
"type": "array",
"items": {
"enum": [
"country",
"device",
"os"
],
"type": "string"
}
},
"reportType": {
"enum": [
"adUnit",
"dimensions",
"customData"
],
"type": "string",
"description": "Advanced report type."
},
"immediateRun": {
"type": "boolean",
"description": "true to run now (emailed), false to only schedule (requires frequency)."
},
"outputFormat": {
"enum": [
"markdown",
"json",
"csv"
],
"type": "string",
"default": "markdown"
},
"utmHourlyBreakdown": {
"type": "boolean"
}
}
}