audit

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

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
89%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (10)

  • LOWTool 'get_sulvo_signup_status' description lacks action verbin get_sulvo_signup_status
  • LOWTool 'get_sulvo_revenue_onboarding_status' name length outside 3-30 rangein get_sulvo_revenue_onboarding_status
  • LOWTool 'review_sulvo_placement_recommendations' name length outside 3-30 rangein review_sulvo_placement_recommendations
  • LOWTool 'get_sulvo_installation_instructions' name length outside 3-30 rangein get_sulvo_installation_instructions
  • LOWTool 'verify_sulvo_placement_installation' name length outside 3-30 rangein verify_sulvo_placement_installation
  • LOWTool 'submit_sulvo_activation_workspace' name length outside 3-30 rangein submit_sulvo_activation_workspace
  • LOWTool 'get_sulvo_activation_smoke_status' name length outside 3-30 rangein get_sulvo_activation_smoke_status
  • LOWTool 'get_publisher_revenue_audit_checklist' name length outside 3-30 rangein get_publisher_revenue_audit_checklist
  • LOWTool 'get_publisher_monetization_benchmarks' name length outside 3-30 rangein get_publisher_monetization_benchmarks
  • LOWTool 'create_sulvo_interstitial_units' name length outside 3-30 rangein create_sulvo_interstitial_units

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~8,668Tokens (tool definitions)
~1.8 KBTypical response size
Significant attention impact (6.77% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "audit": {
      "command": "npx",
      "args": [
        "publisher-revenue-audit-mcp"
      ]
    }
  }
}

Runnable packages

npmpublisher-revenue-audit-mcp0.2.1stdio

Remote endpoints

https://publisher-revenue-audit.sulvo.com/mcpstreamable-http

What it can do

Tool inventory

Tools (41)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check_https_certificate(domain, outputFormat)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Publisher domain, for example example.com."
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json",
        "csv"
      ]
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢run_agentic_readiness_audit(domain, outputFormat)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Publisher domain, for example example.com."
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json",
        "csv"
      ]
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_crawler_blocks(domain, outputFormat)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Publisher domain, for example example.com."
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json",
        "csv"
      ]
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sulvo_boost_setup(cdn)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "cdn": {
      "description": "The CDN fronting the site; omit to get all three options.",
      "type": "string",
      "enum": [
        "cloudflare",
        "aws",
        "fastly"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡start_sulvo_revenue_onboarding(domain, auditArtifactId, goal, retagTiming, idempotencyKey, ...)

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

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "maxLength": 253
    },
    "auditArtifactId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 8192
    },
    "goal": {
      "description": "The publisher's #1 goal: increase demand and CPMs, or recover ad-blocked impressions (Boost).",
      "type": "string",
      "enum": [
        "demand",
        "adblock_recovery"
      ]
    },
    "retagTiming": {
      "description": "Demand goal only: retag now (requires passback/backup mapping) or after site approval (no passback).",
      "type": "string",
      "enum": [
        "now",
        "after_approval"
      ]
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sulvo_revenue_onboarding_status(workspaceId, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴attach_sulvo_revenue_audit(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡connect_sulvo_backup_provider(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴import_sulvo_backup_units(workspaceId, input, idempotencyKey, outputFormat)

Import connected provider units. Input requires provider and expectedVersion.

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴review_sulvo_placement_recommendations(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡save_sulvo_placement_plan(workspaceId, input, idempotencyKey, outputFormat)

Save a placement revision. Input requires expectedVersion and payload.

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "type": "object",
      "properties": {
        "expectedVersion": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "payload": {
          "type": "object",
          "properties": {
            "placements": {
              "minItems": 1,
              "maxItems": 50,
              "type": "array",
              "items": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "consentDeclaration": {
              "description": "Attest that consent requirements are accounted for. Preflight requires true.",
              "type": "boolean"
            },
            "runtimeDeclaration": {
              "description": "Attest that runtime placement behavior has been reviewed. Preflight requires true.",
              "type": "boolean"
            }
          },
          "required": [
            "placements"
          ],
          "additionalProperties": {}
        }
      },
      "required": [
        "expectedVersion",
        "payload"
      ],
      "additionalProperties": {},
      "description": "A revision containing from 1 to 50 placements plus the consent/runtime attestations preflight requires."
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId",
    "input"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴map_sulvo_placement_backup(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sulvo_installation_instructions(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪verify_sulvo_placement_installation(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴lock_sulvo_placement_revision(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪run_sulvo_activation_preflight(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪verify_sulvo_site_ownership(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴submit_sulvo_activation_workspace(workspaceId, input, idempotencyKey, outputFormat)

Submit the proven revision. Input requires expectedVersion and revisionId.

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴submit_sulvo_site_for_approval(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴set_sulvo_onboarding_journey(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴rollback_sulvo_activation(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sulvo_activation_smoke_status(workspaceId, input, idempotencyKey, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Activation workspace identifier returned by the start or status tool."
    },
    "input": {
      "description": "Fields required by this journey action.",
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "idempotencyKey": {
      "description": "Optional retry key. Reuse it when retrying the same mutation.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "workspaceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢run_publisher_revenue_audit(domain, vertical, metrics, options)

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 Schema

{
  "type": "object",
  "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."
    },
    "vertical": {
      "description": "Optional publisher vertical used for interpretation.",
      "type": "string",
      "enum": [
        "news",
        "sports",
        "entertainment",
        "technology",
        "education",
        "gaming",
        "other"
      ]
    },
    "metrics": {
      "description": "Optional publisher-supplied metrics used for directional revenue interpretation.",
      "type": "object",
      "properties": {
        "impressionsPerPageview": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 100
        },
        "impressionsPerSession": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1000
        },
        "pageviewsPerSession": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 100000
        },
        "dashboardViewabilityRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "fillRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 100
        },
        "averageCpm": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000
        },
        "revenuePerSession": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000
        },
        "monthlyPageviews": {
          "description": "Actual monthly pageview volume. When provided, the yield simulator uses this scale instead of the standard 100k baseline.",
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1000000000000
        },
        "monthlySessions": {
          "description": "Actual monthly session count. Used with pageviewsPerSession to derive scale when monthlyPageviews is not supplied directly.",
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1000000000000
        }
      }
    },
    "options": {
      "description": "Optional output and audit controls.",
      "type": "object",
      "properties": {
        "format": {
          "default": "markdown",
          "type": "string",
          "enum": [
            "markdown",
            "json",
            "markdown_and_json"
          ]
        },
        "compact": {
          "description": "When true with JSON output, return the compact agent-oriented report shape instead of the full report object.",
          "default": false,
          "type": "boolean"
        },
        "maxPages": {
          "default": 2,
          "type": "integer",
          "minimum": 1,
          "maximum": 5
        },
        "includeEvidence": {
          "default": true,
          "type": "boolean"
        },
        "enableBrowser": {
          "description": "When true, run optional Playwright diagnostics for rendered slots, provider-aware network/console errors, selected provider privacy-review signals, and bfcache signals.",
          "default": false,
          "type": "boolean"
        },
        "includeScreenshots": {
          "description": "When true with enableBrowser, save a full-page screenshot artifact using a relative artifact path.",
          "default": false,
          "type": "boolean"
        },
        "artifactsDir": {
          "default": "audit-artifacts",
          "description": "Relative directory for optional artifacts. Absolute paths, current-directory output, and parent traversal are rejected.",
          "type": "string",
          "minLength": 1
        },
        "enablePageSpeed": {
          "description": "When true, request public PageSpeed/Core Web Vitals diagnostics.",
          "default": false,
          "type": "boolean"
        },
        "pageSpeedStrategy": {
          "default": "mobile",
          "type": "string",
          "enum": [
            "mobile",
            "desktop"
          ]
        },
        "concurrency": {
          "description": "Maximum number of audit collection tasks to run at once.",
          "default": 2,
          "type": "integer",
          "minimum": 1,
          "maximum": 5
        },
        "whiteLabel": {
          "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.",
          "default": false,
          "type": "boolean"
        },
        "partnerId": {
          "description": "Optional referral or partner tracking identifier embedded in call-to-action URLs.",
          "type": "string"
        }
      }
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴apply_for_sulvo_account(domain, email, outputFormat)

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 Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains."
    },
    "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."
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "domain",
    "email"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴start_sulvo_signup(domain, email, monthlyPageviews, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Primary publisher root domain to submit for Sulvo signup."
    },
    "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."
    },
    "monthlyPageviews": {
      "description": "Optional expected monthly pageviews to carry into the response. The current lead API stores traffic during account creation.",
      "type": "number",
      "exclusiveMinimum": 0
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "domain",
    "email"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴create_sulvo_signup_account(domain, email, firstName, lastName, password, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Primary publisher root domain used in signup start."
    },
    "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."
    },
    "firstName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "lastName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "password": {
      "type": "string",
      "minLength": 6,
      "description": "Password for the pending Sulvo account. This is required by the current signup backend."
    },
    "monthlyPageviews": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "phone": {
      "type": "string"
    },
    "mixpanelId": {
      "type": "string"
    },
    "utmSource": {
      "type": "string"
    },
    "utmMedium": {
      "type": "string"
    },
    "utmContent": {
      "type": "string"
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "domain",
    "email",
    "firstName",
    "lastName",
    "password",
    "monthlyPageviews"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴update_sulvo_signup_company(userId, website, address, city, zip, ...)

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

Input Schema

{
  "type": "object",
  "properties": {
    "userId": {
      "type": "string",
      "minLength": 1
    },
    "website": {
      "type": "string"
    },
    "address": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "zip": {
      "type": "string"
    },
    "state": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "employeeCount": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "monthlyAdRevenue": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "userId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sulvo_signup_ads_txt(userId, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "userId": {
      "type": "string",
      "minLength": 1
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "userId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪verify_sulvo_signup_ads_txt(userId, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "userId": {
      "type": "string",
      "minLength": 1
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "userId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sulvo_signup_status(userId, outputFormat)

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 Schema

{
  "type": "object",
  "properties": {
    "userId": {
      "type": "string",
      "minLength": 1
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "userId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢submit_sulvo_signup_documents

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_publisher_revenue_audit_checklist

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

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_publisher_monetization_benchmarks(vertical)

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

Input Schema

{
  "type": "object",
  "properties": {
    "vertical": {
      "description": "Optional publisher vertical to retrieve benchmarks for. Defaults to other.",
      "type": "string",
      "enum": [
        "news",
        "sports",
        "entertainment",
        "technology",
        "education",
        "gaming",
        "other"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_sulvo_ad_unit(domain, type, size, placement, custom, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Publisher domain the ad unit belongs to."
    },
    "type": {
      "type": "string",
      "enum": [
        "display",
        "native_multi",
        "sticky_display",
        "sticky_mobile",
        "sticky_display_custom",
        "sticky_mobile_custom",
        "sticky_video",
        "interstitial_desktop",
        "interstitial_mobile",
        "offerwall"
      ],
      "description": "Ad unit type."
    },
    "size": {
      "description": "Ad size as width/height, or a responsive token like responsive_all. Required by the backend for most non-interstitial types.",
      "type": "object",
      "properties": {
        "width": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "height": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "responsive": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "placement": {
      "description": "Optional placement weight (0-1).",
      "type": "number",
      "minimum": 0,
      "maximum": 1
    },
    "custom": {
      "description": "Optional custom unit name.",
      "type": "string",
      "minLength": 1
    },
    "focusedAd": {
      "description": "Only valid for the display type.",
      "type": "boolean"
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "domain",
    "type"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_sulvo_interstitial_units(domain, adTypes, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Publisher domain the units belong to."
    },
    "adTypes": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "interstitial_desktop",
          "interstitial_mobile"
        ]
      },
      "description": "One or more interstitial ad types to create."
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "domain",
    "adTypes"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_sulvo_auto_sticky_units(domain, adTypes, outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Publisher domain the units belong to."
    },
    "adTypes": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "sticky_display",
          "sticky_mobile"
        ]
      },
      "description": "One or more sticky ad types to create."
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "domain",
    "adTypes"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_sulvo_ad_unit(adId)

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 Schema

{
  "type": "object",
  "properties": {
    "adId": {
      "type": "string",
      "minLength": 1,
      "description": "The ad unit id to delete."
    }
  },
  "required": [
    "adId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_sulvo_report(reportType, start, end, domains, adRoots, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "reportType": {
      "type": "string",
      "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"
      ],
      "description": "Which report to fetch."
    },
    "start": {
      "description": "Start date (YYYY-MM-DD or ISO). Required by most date-bounded reports.",
      "type": "string"
    },
    "end": {
      "description": "End date (YYYY-MM-DD or ISO).",
      "type": "string"
    },
    "domains": {
      "description": "Filter to these publisher domains.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "adRoots": {
      "description": "Filter to these ad unit roots.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "adProvider": {
      "description": "Optional provider filter (e.g. relabe, adsense).",
      "type": "string"
    },
    "directBidder": {
      "description": "Required for direct-bidder-analysis: the bidder name.",
      "type": "string"
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json",
        "csv"
      ]
    }
  },
  "required": [
    "reportType"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_sulvo_advanced_reports(outputFormat)

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

Input Schema

{
  "type": "object",
  "properties": {
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json",
        "csv"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴save_sulvo_advanced_report(reportType, toAddress, immediateRun, start, end, ...)

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 Schema

{
  "type": "object",
  "properties": {
    "reportType": {
      "type": "string",
      "enum": [
        "adUnit",
        "dimensions",
        "customData"
      ],
      "description": "Advanced report type."
    },
    "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."
    },
    "immediateRun": {
      "type": "boolean",
      "description": "true to run now (emailed), false to only schedule (requires frequency)."
    },
    "start": {
      "type": "string"
    },
    "end": {
      "type": "string"
    },
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "adRoots": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "dimensions": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "country",
          "device",
          "os"
        ]
      }
    },
    "utms": {
      "description": "customData (UTM) reports only.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "utmHourlyBreakdown": {
      "type": "boolean"
    },
    "frequency": {
      "description": "Required when immediateRun is false.",
      "type": "string",
      "enum": [
        "daily",
        "weekly",
        "biweekly",
        "monthly"
      ]
    },
    "timeZone": {
      "description": "IANA timezone for scheduled delivery.",
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "reportId": {
      "description": "Provide to update an existing saved report.",
      "type": "string"
    },
    "outputFormat": {
      "default": "markdown",
      "type": "string",
      "enum": [
        "markdown",
        "json",
        "csv"
      ]
    }
  },
  "required": [
    "reportType",
    "toAddress",
    "immediateRun"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_sulvo_advanced_report(reportId)

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

Input Schema

{
  "type": "object",
  "properties": {
    "reportId": {
      "type": "string",
      "minLength": 1,
      "description": "The advanced report id to delete."
    }
  },
  "required": [
    "reportId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded41 tools
verifiedversion not recorded41 tools
verifiedversion not recorded41 tools
verifiedversion not recorded41 tools
verifiedversion not recorded41 tools
verifiedversion not recorded41 tools