audit
Publisher revenue audit: ads.txt and ad-stack checks, Sulvo onboarding, and Boost ad-block recovery
Should I use this
Quality & Safety
Findings (10)
- LOWin get_sulvo_signup_status
- LOWin get_sulvo_revenue_onboarding_status
- LOWin review_sulvo_placement_recommendations
- LOWin get_sulvo_installation_instructions
- LOWin verify_sulvo_placement_installation
- LOWin submit_sulvo_activation_workspace
- LOWin get_sulvo_activation_smoke_status
- LOWin get_publisher_revenue_audit_checklist
- LOWin get_publisher_monetization_benchmarks
- LOWin create_sulvo_interstitial_units
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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
0.2.1stdioRemote endpoints
https://publisher-revenue-audit.sulvo.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (41)
🟢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": {
"type": "string",
"enum": [
"markdown",
"json",
"csv"
],
"default": "markdown"
}
},
"required": [
"domain"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json",
"csv"
],
"default": "markdown"
}
},
"required": [
"domain"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json",
"csv"
],
"default": "markdown"
}
},
"required": [
"domain"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"cloudflare",
"aws",
"fastly"
],
"description": "The CDN fronting the site; omit to get all three options."
}
},
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"demand",
"adblock_recovery"
],
"description": "The publisher's #1 goal: increase demand and CPMs, or recover ad-blocked impressions (Boost)."
},
"retagTiming": {
"type": "string",
"enum": [
"now",
"after_approval"
],
"description": "Demand goal only: retag now (requires passback/backup mapping) or after site approval (no passback)."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"domain"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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
},
"payload": {
"type": "object",
"properties": {
"placements": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"minItems": 1,
"maxItems": 50
},
"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."
}
},
"required": [
"placements"
],
"additionalProperties": true
}
},
"required": [
"expectedVersion",
"payload"
],
"additionalProperties": true,
"description": "A revision containing from 1 to 50 placements plus the consent/runtime attestations preflight requires."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId",
"input"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "object",
"additionalProperties": {},
"default": {},
"description": "Fields required by this journey action."
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Optional retry key. Reuse it when retrying the same mutation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"workspaceId"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"news",
"sports",
"entertainment",
"technology",
"education",
"gaming",
"other"
],
"description": "Optional publisher vertical used for interpretation."
},
"metrics": {
"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": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000000,
"description": "Actual monthly pageview volume. When provided, the yield simulator uses this scale instead of the standard 100k baseline."
},
"monthlySessions": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000000,
"description": "Actual monthly session count. Used with pageviewsPerSession to derive scale when monthlyPageviews is not supplied directly."
}
},
"additionalProperties": false,
"description": "Optional publisher-supplied metrics used for directional revenue interpretation."
},
"options": {
"type": "object",
"properties": {
"format": {
"type": "string",
"enum": [
"markdown",
"json",
"markdown_and_json"
],
"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",
"minimum": 1,
"maximum": 5,
"default": 2
},
"includeEvidence": {
"type": "boolean",
"default": true
},
"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."
},
"includeScreenshots": {
"type": "boolean",
"default": false,
"description": "When true with enableBrowser, save a full-page screenshot artifact using a relative artifact path."
},
"artifactsDir": {
"type": "string",
"minLength": 1,
"default": "audit-artifacts",
"description": "Relative directory for optional artifacts. Absolute paths, current-directory output, and parent traversal are rejected."
},
"enablePageSpeed": {
"type": "boolean",
"default": false,
"description": "When true, request public PageSpeed/Core Web Vitals diagnostics."
},
"pageSpeedStrategy": {
"type": "string",
"enum": [
"mobile",
"desktop"
],
"default": "mobile"
},
"concurrency": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 2,
"description": "Maximum number of audit collection tasks to run at once."
},
"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."
},
"partnerId": {
"type": "string",
"description": "Optional referral or partner tracking identifier embedded in call-to-action URLs."
}
},
"additionalProperties": false,
"description": "Optional output and audit controls."
}
},
"required": [
"domain"
],
"additionalProperties": false,
"$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",
"description": "Applicant email address Sulvo should use for follow-up."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"domain",
"email"
],
"additionalProperties": false,
"$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",
"description": "Applicant email address."
},
"monthlyPageviews": {
"type": "number",
"exclusiveMinimum": 0,
"description": "Optional expected monthly pageviews to carry into the response. The current lead API stores traffic during account creation."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"domain",
"email"
],
"additionalProperties": false,
"$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",
"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": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"domain",
"email",
"firstName",
"lastName",
"password",
"monthlyPageviews"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"userId"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"userId"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"userId"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"userId"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"news",
"sports",
"entertainment",
"technology",
"education",
"gaming",
"other"
],
"description": "Optional publisher vertical to retrieve benchmarks for. Defaults to other."
}
},
"additionalProperties": false,
"$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": {
"type": "object",
"properties": {
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"responsive": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false,
"description": "Ad size as width/height, or a responsive token like responsive_all. Required by the backend for most non-interstitial types."
},
"placement": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Optional placement weight (0-1)."
},
"custom": {
"type": "string",
"minLength": 1,
"description": "Optional custom unit name."
},
"focusedAd": {
"type": "boolean",
"description": "Only valid for the display type."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"domain",
"type"
],
"additionalProperties": false,
"$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": {
"type": "array",
"items": {
"type": "string",
"enum": [
"interstitial_desktop",
"interstitial_mobile"
]
},
"minItems": 1,
"description": "One or more interstitial ad types to create."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"domain",
"adTypes"
],
"additionalProperties": false,
"$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": {
"type": "array",
"items": {
"type": "string",
"enum": [
"sticky_display",
"sticky_mobile"
]
},
"minItems": 1,
"description": "One or more sticky ad types to create."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json"
],
"default": "markdown"
}
},
"required": [
"domain",
"adTypes"
],
"additionalProperties": false,
"$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"
],
"additionalProperties": false,
"$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": {
"type": "string",
"description": "Start date (YYYY-MM-DD or ISO). Required by most date-bounded reports."
},
"end": {
"type": "string",
"description": "End date (YYYY-MM-DD or ISO)."
},
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to these publisher domains."
},
"adRoots": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to these ad unit roots."
},
"adProvider": {
"type": "string",
"description": "Optional provider filter (e.g. relabe, adsense)."
},
"directBidder": {
"type": "string",
"description": "Required for direct-bidder-analysis: the bidder name."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json",
"csv"
],
"default": "markdown"
}
},
"required": [
"reportType"
],
"additionalProperties": false,
"$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": {
"type": "string",
"enum": [
"markdown",
"json",
"csv"
],
"default": "markdown"
}
},
"additionalProperties": false,
"$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",
"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": {
"type": "array",
"items": {
"type": "string"
},
"description": "customData (UTM) reports only."
},
"utmHourlyBreakdown": {
"type": "boolean"
},
"frequency": {
"type": "string",
"enum": [
"daily",
"weekly",
"biweekly",
"monthly"
],
"description": "Required when immediateRun is false."
},
"timeZone": {
"type": "string",
"description": "IANA timezone for scheduled delivery."
},
"name": {
"type": "string"
},
"reportId": {
"type": "string",
"description": "Provide to update an existing saved report."
},
"outputFormat": {
"type": "string",
"enum": [
"markdown",
"json",
"csv"
],
"default": "markdown"
}
},
"required": [
"reportType",
"toAddress",
"immediateRun"
],
"additionalProperties": false,
"$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"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence