{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "",
    "endpoint": "https://publisher-revenue-audit.sulvo.com/mcp",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/sulvo-audit.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/sulvo-audit.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/sulvo-audit.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 9894,
        "counts": {
          "error": 0,
          "note": 1,
          "warn": 36
        },
        "findings": [
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "apply_for_sulvo_account",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "attach_sulvo_revenue_audit",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "check_crawler_blocks",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "check_https_certificate",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "connect_sulvo_backup_provider",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "create_sulvo_ad_unit",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "create_sulvo_auto_sticky_units",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "create_sulvo_interstitial_units",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "create_sulvo_signup_account",
            "message": "9 parameters without a description: firstName, lastName, mixpanelId, monthlyPageviews, outputFormat, phone and 3 more",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "get_sulvo_activation_smoke_status",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "get_sulvo_installation_instructions",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "get_sulvo_report",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "get_sulvo_revenue_onboarding_status",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "get_sulvo_signup_ads_txt",
            "message": "none of its 2 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "get_sulvo_signup_status",
            "message": "none of its 2 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "import_sulvo_backup_units",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "list_sulvo_advanced_reports",
            "message": "its one parameter, outputFormat, has no description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "lock_sulvo_placement_revision",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "map_sulvo_placement_backup",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "review_sulvo_placement_recommendations",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "rollback_sulvo_activation",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "run_agentic_readiness_audit",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "run_sulvo_activation_preflight",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "save_sulvo_advanced_report",
            "message": "8 parameters without a description: adRoots, dimensions, domains, end, name, outputFormat and 2 more",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "save_sulvo_placement_plan",
            "message": "2 parameters without a description: input.payload.placements, outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "set_sulvo_onboarding_journey",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "start_sulvo_revenue_onboarding",
            "message": "3 parameters without a description: auditArtifactId, domain, outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "start_sulvo_signup",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "submit_sulvo_activation_workspace",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "submit_sulvo_site_for_approval",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "update_sulvo_signup_company",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "verify_sulvo_placement_installation",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "verify_sulvo_signup_ads_txt",
            "message": "none of its 2 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "verify_sulvo_site_ownership",
            "message": "1 parameter without a description: outputFormat",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC18",
            "severity": "warn",
            "tool": "submit_sulvo_signup_documents",
            "message": "readOnlyHint is true but the name says \"submit\"",
            "fix": "If it changes anything, readOnlyHint must be false."
          },
          {
            "rule": "TC23",
            "severity": "warn",
            "message": "41 tools",
            "fix": "Offer a smaller default toolset and let clients opt into the rest."
          },
          {
            "rule": "TC24",
            "severity": "note",
            "message": "41 of 41 tools have no outputSchema",
            "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:24:05Z",
      "count": 41,
      "schemaTokens": 9894,
      "status": "ok",
      "tools": [
        {
          "name": "check_https_certificate",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "domain": {
                "description": "Publisher domain, for example example.com.",
                "minLength": 1,
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json",
                  "csv"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": true,
            "readOnlyHint": true
          }
        },
        {
          "name": "run_agentic_readiness_audit",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "domain": {
                "description": "Publisher domain, for example example.com.",
                "minLength": 1,
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json",
                  "csv"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": true,
            "readOnlyHint": true
          }
        },
        {
          "name": "check_crawler_blocks",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "domain": {
                "description": "Publisher domain, for example example.com.",
                "minLength": 1,
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json",
                  "csv"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": true,
            "readOnlyHint": true
          }
        },
        {
          "name": "get_sulvo_boost_setup",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "cdn": {
                "description": "The CDN fronting the site; omit to get all three options.",
                "enum": [
                  "cloudflare",
                  "aws",
                  "fastly"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "start_sulvo_revenue_onboarding",
          "description": "Create or resume a verified-account activation workspace after the public audit and signup steps.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "auditArtifactId": {
                "maxLength": 8192,
                "minLength": 1,
                "type": "string"
              },
              "domain": {
                "maxLength": 253,
                "minLength": 1,
                "type": "string"
              },
              "goal": {
                "description": "The publisher's #1 goal: increase demand and CPMs, or recover ad-blocked impressions (Boost).",
                "enum": [
                  "demand",
                  "adblock_recovery"
                ],
                "type": "string"
              },
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "retagTiming": {
                "description": "Demand goal only: retag now (requires passback/backup mapping) or after site approval (no passback).",
                "enum": [
                  "now",
                  "after_approval"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "get_sulvo_revenue_onboarding_status",
          "description": "Return the backend-owned journey stage, readiness dimensions, and one next best action.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "attach_sulvo_revenue_audit",
          "description": "Attach a current public revenue audit artifact. Input requires expectedVersion and auditArtifactId.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "connect_sulvo_backup_provider",
          "description": "Return the GAM or AdSense authorization URL. Input requires provider set to gam or adsense.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "import_sulvo_backup_units",
          "description": "Import connected provider units. Input requires provider and expectedVersion.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "review_sulvo_placement_recommendations",
          "description": "Save accept, edit, or reject decisions. Input requires expectedVersion and decisions.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "save_sulvo_placement_plan",
          "description": "Save a placement revision. Input requires expectedVersion and payload.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": true,
                "description": "A revision containing from 1 to 50 placements plus the consent/runtime attestations preflight requires.",
                "properties": {
                  "expectedVersion": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  },
                  "payload": {
                    "additionalProperties": true,
                    "properties": {
                      "consentDeclaration": {
                        "description": "Attest that consent requirements are accounted for. Preflight requires true.",
                        "type": "boolean"
                      },
                      "placements": {
                        "items": {
                          "additionalProperties": {},
                          "type": "object"
                        },
                        "maxItems": 50,
                        "minItems": 1,
                        "type": "array"
                      },
                      "runtimeDeclaration": {
                        "description": "Attest that runtime placement behavior has been reviewed. Preflight requires true.",
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "placements"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "expectedVersion",
                  "payload"
                ],
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId",
              "input"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "map_sulvo_placement_backup",
          "description": "Map a display placement backup. Input requires expectedVersion, stablePlacementId, provider, and providerId.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "get_sulvo_installation_instructions",
          "description": "Return installation values for the locked revision. Input is empty.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "verify_sulvo_placement_installation",
          "description": "Verify every stable placement container and the inert loader for the locked revision.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "lock_sulvo_placement_revision",
          "description": "Lock the exact mapped revision. Input requires expectedVersion and revisionId.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "run_sulvo_activation_preflight",
          "description": "Run the complete bounded activation preflight for the locked workspace revision.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "verify_sulvo_site_ownership",
          "description": "Verify the required ads.txt and inert Sulvo head-tag ownership evidence.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "submit_sulvo_activation_workspace",
          "description": "Submit the proven revision. Input requires expectedVersion and revisionId.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "submit_sulvo_site_for_approval",
          "description": "Retag-after-approval journeys: submit the bare site for Google approval (ads.txt ownership only, no tags). Input requires expectedVersion.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "set_sulvo_onboarding_journey",
          "description": "Set or change the journey intake answers on the workspace. Input requires expectedVersion plus at least one of mode, goal, retagTiming.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "rollback_sulvo_activation",
          "description": "Return the workspace domain to publisher-owned backup-only serving.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "get_sulvo_activation_smoke_status",
          "description": "Return active-probe, real-page, and remediation status for the latest activation attempt.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "idempotencyKey": {
                "description": "Optional retry key. Reuse it when retrying the same mutation.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              },
              "input": {
                "additionalProperties": {},
                "default": {},
                "description": "Fields required by this journey action.",
                "type": "object"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "workspaceId": {
                "description": "Activation workspace identifier returned by the start or status tool.",
                "maxLength": 128,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "workspaceId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "run_publisher_revenue_audit",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "domain": {
                "description": "Publisher domain to screen, for example example.com. Private/local targets, raw IPs, internal hosts, and non-standard ports are rejected.",
                "minLength": 1,
                "type": "string"
              },
              "metrics": {
                "additionalProperties": false,
                "description": "Optional publisher-supplied metrics used for directional revenue interpretation.",
                "properties": {
                  "averageCpm": {
                    "maximum": 100000,
                    "minimum": 0,
                    "type": "number"
                  },
                  "dashboardViewabilityRate": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "number"
                  },
                  "fillRate": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": "number"
                  },
                  "impressionsPerPageview": {
                    "exclusiveMinimum": 0,
                    "maximum": 100,
                    "type": "number"
                  },
                  "impressionsPerSession": {
                    "exclusiveMinimum": 0,
                    "maximum": 1000,
                    "type": "number"
                  },
                  "monthlyPageviews": {
                    "description": "Actual monthly pageview volume. When provided, the yield simulator uses this scale instead of the standard 100k baseline.",
                    "exclusiveMinimum": 0,
                    "maximum": 1000000000000,
                    "type": "number"
                  },
                  "monthlySessions": {
                    "description": "Actual monthly session count. Used with pageviewsPerSession to derive scale when monthlyPageviews is not supplied directly.",
                    "exclusiveMinimum": 0,
                    "maximum": 1000000000000,
                    "type": "number"
                  },
                  "pageviewsPerSession": {
                    "exclusiveMinimum": 0,
                    "maximum": 100000,
                    "type": "number"
                  },
                  "revenuePerSession": {
                    "maximum": 100000,
                    "minimum": 0,
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "options": {
                "additionalProperties": false,
                "description": "Optional output and audit controls.",
                "properties": {
                  "artifactsDir": {
                    "default": "audit-artifacts",
                    "description": "Relative directory for optional artifacts. Absolute paths, current-directory output, and parent traversal are rejected.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "compact": {
                    "default": false,
                    "description": "When true with JSON output, return the compact agent-oriented report shape instead of the full report object.",
                    "type": "boolean"
                  },
                  "concurrency": {
                    "default": 2,
                    "description": "Maximum number of audit collection tasks to run at once.",
                    "maximum": 5,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "enableBrowser": {
                    "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.",
                    "type": "boolean"
                  },
                  "enablePageSpeed": {
                    "default": false,
                    "description": "When true, request public PageSpeed/Core Web Vitals diagnostics.",
                    "type": "boolean"
                  },
                  "format": {
                    "default": "markdown",
                    "enum": [
                      "markdown",
                      "json",
                      "markdown_and_json"
                    ],
                    "type": "string"
                  },
                  "includeEvidence": {
                    "default": true,
                    "type": "boolean"
                  },
                  "includeScreenshots": {
                    "default": false,
                    "description": "When true with enableBrowser, save a full-page screenshot artifact using a relative artifact path.",
                    "type": "boolean"
                  },
                  "maxPages": {
                    "default": 2,
                    "maximum": 5,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "pageSpeedStrategy": {
                    "default": "mobile",
                    "enum": [
                      "mobile",
                      "desktop"
                    ],
                    "type": "string"
                  },
                  "partnerId": {
                    "description": "Optional referral or partner tracking identifier embedded in call-to-action URLs.",
                    "type": "string"
                  },
                  "whiteLabel": {
                    "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.",
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "vertical": {
                "description": "Optional publisher vertical used for interpretation.",
                "enum": [
                  "news",
                  "sports",
                  "entertainment",
                  "technology",
                  "education",
                  "gaming",
                  "other"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": true,
            "readOnlyHint": true
          }
        },
        {
          "name": "apply_for_sulvo_account",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "domain": {
                "description": "Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains.",
                "minLength": 1,
                "type": "string"
              },
              "email": {
                "description": "Applicant email address Sulvo should use for follow-up.",
                "format": "email",
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain",
              "email"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": true,
            "readOnlyHint": false
          }
        },
        {
          "name": "start_sulvo_signup",
          "description": "Run normal Sulvo signup step 1: verify the publisher domain and create the unauthenticated signup lead.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "domain": {
                "description": "Primary publisher root domain to submit for Sulvo signup.",
                "minLength": 1,
                "type": "string"
              },
              "email": {
                "description": "Applicant email address.",
                "format": "email",
                "type": "string"
              },
              "monthlyPageviews": {
                "description": "Optional expected monthly pageviews to carry into the response. The current lead API stores traffic during account creation.",
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain",
              "email"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": true,
            "readOnlyHint": false
          }
        },
        {
          "name": "create_sulvo_signup_account",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "domain": {
                "description": "Primary publisher root domain used in signup start.",
                "minLength": 1,
                "type": "string"
              },
              "email": {
                "description": "Applicant email address.",
                "format": "email",
                "type": "string"
              },
              "firstName": {
                "maxLength": 30,
                "minLength": 1,
                "type": "string"
              },
              "lastName": {
                "maxLength": 30,
                "minLength": 1,
                "type": "string"
              },
              "mixpanelId": {
                "type": "string"
              },
              "monthlyPageviews": {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "password": {
                "description": "Password for the pending Sulvo account. This is required by the current signup backend.",
                "minLength": 6,
                "type": "string"
              },
              "phone": {
                "type": "string"
              },
              "utmContent": {
                "type": "string"
              },
              "utmMedium": {
                "type": "string"
              },
              "utmSource": {
                "type": "string"
              }
            },
            "required": [
              "domain",
              "email",
              "firstName",
              "lastName",
              "password",
              "monthlyPageviews"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": true,
            "readOnlyHint": false
          }
        },
        {
          "name": "update_sulvo_signup_company",
          "description": "Run normal Sulvo signup step 3: save optional company information for a pending Sulvo signup.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "address": {
                "type": "string"
              },
              "city": {
                "type": "string"
              },
              "country": {
                "type": "string"
              },
              "employeeCount": {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "monthlyAdRevenue": {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "state": {
                "type": "string"
              },
              "userId": {
                "minLength": 1,
                "type": "string"
              },
              "website": {
                "type": "string"
              },
              "zip": {
                "type": "string"
              }
            },
            "required": [
              "userId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": true,
            "readOnlyHint": false
          }
        },
        {
          "name": "get_sulvo_signup_ads_txt",
          "description": "Run normal Sulvo signup step 4a: fetch the ads.txt lines the publisher must add for site ownership verification.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "userId": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "userId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "verify_sulvo_signup_ads_txt",
          "description": "Run normal Sulvo signup step 4b: verify whether the submitted publisher domain has the required Sulvo ads.txt lines.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "userId": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "userId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "get_sulvo_signup_status",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "userId": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "userId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "submit_sulvo_signup_documents",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {},
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "get_publisher_revenue_audit_checklist",
          "description": "Return the public checklist and interpretation notes used by the publisher revenue-readiness screen.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "properties": {},
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "get_publisher_monetization_benchmarks",
          "description": "Get comparative yield and CPM industry benchmarks by publisher vertical to compare standard stacks (AdSense and managed wrappers) against Sulvo Premium Ad Units.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "vertical": {
                "description": "Optional publisher vertical to retrieve benchmarks for. Defaults to other.",
                "enum": [
                  "news",
                  "sports",
                  "entertainment",
                  "technology",
                  "education",
                  "gaming",
                  "other"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "create_sulvo_ad_unit",
          "description": "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 -\u003e API key). The Sulvo account must be approved; the backend rejects unapproved accounts. Returns the created unit id and container root.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "custom": {
                "description": "Optional custom unit name.",
                "minLength": 1,
                "type": "string"
              },
              "domain": {
                "description": "Publisher domain the ad unit belongs to.",
                "minLength": 1,
                "type": "string"
              },
              "focusedAd": {
                "description": "Only valid for the display type.",
                "type": "boolean"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              },
              "placement": {
                "description": "Optional placement weight (0-1).",
                "maximum": 1,
                "minimum": 0,
                "type": "number"
              },
              "size": {
                "additionalProperties": false,
                "description": "Ad size as width/height, or a responsive token like responsive_all. Required by the backend for most non-interstitial types.",
                "properties": {
                  "height": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  "responsive": {
                    "minLength": 1,
                    "type": "string"
                  },
                  "width": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "type": {
                "description": "Ad unit type.",
                "enum": [
                  "display",
                  "native_multi",
                  "sticky_display",
                  "sticky_mobile",
                  "sticky_display_custom",
                  "sticky_mobile_custom",
                  "sticky_video",
                  "interstitial_desktop",
                  "interstitial_mobile",
                  "offerwall"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain",
              "type"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "create_sulvo_interstitial_units",
          "description": "Create Sulvo interstitial ad units (tagless) for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "adTypes": {
                "description": "One or more interstitial ad types to create.",
                "items": {
                  "enum": [
                    "interstitial_desktop",
                    "interstitial_mobile"
                  ],
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "domain": {
                "description": "Publisher domain the units belong to.",
                "minLength": 1,
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain",
              "adTypes"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "create_sulvo_auto_sticky_units",
          "description": "Create Sulvo auto-sticky ad units for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "adTypes": {
                "description": "One or more sticky ad types to create.",
                "items": {
                  "enum": [
                    "sticky_display",
                    "sticky_mobile"
                  ],
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              "domain": {
                "description": "Publisher domain the units belong to.",
                "minLength": 1,
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json"
                ],
                "type": "string"
              }
            },
            "required": [
              "domain",
              "adTypes"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "delete_sulvo_ad_unit",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "adId": {
                "description": "The ad unit id to delete.",
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "adId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        },
        {
          "name": "get_sulvo_report",
          "description": "Fetch a Sulvo report (read-only). Requires SULVO_API_KEY in the server environment (a publisher generates it in the dashboard: Account Settings -\u003e 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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "adProvider": {
                "description": "Optional provider filter (e.g. relabe, adsense).",
                "type": "string"
              },
              "adRoots": {
                "description": "Filter to these ad unit roots.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "directBidder": {
                "description": "Required for direct-bidder-analysis: the bidder name.",
                "type": "string"
              },
              "domains": {
                "description": "Filter to these publisher domains.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "end": {
                "description": "End date (YYYY-MM-DD or ISO).",
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json",
                  "csv"
                ],
                "type": "string"
              },
              "reportType": {
                "description": "Which report to fetch.",
                "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"
              },
              "start": {
                "description": "Start date (YYYY-MM-DD or ISO). Required by most date-bounded reports.",
                "type": "string"
              }
            },
            "required": [
              "reportType"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "list_sulvo_advanced_reports",
          "description": "List the saved Sulvo advanced reports for the account. Requires SULVO_API_KEY (with the reports:read scope) in the server environment.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json",
                  "csv"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "annotations": {
            "destructiveHint": false,
            "openWorldHint": false,
            "readOnlyHint": true
          }
        },
        {
          "name": "save_sulvo_advanced_report",
          "description": "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.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "adRoots": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "dimensions": {
                "items": {
                  "enum": [
                    "country",
                    "device",
                    "os"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "domains": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "end": {
                "type": "string"
              },
              "frequency": {
                "description": "Required when immediateRun is false.",
                "enum": [
                  "daily",
                  "weekly",
                  "biweekly",
                  "monthly"
                ],
                "type": "string"
              },
              "immediateRun": {
                "description": "true to run now (emailed), false to only schedule (requires frequency).",
                "type": "boolean"
              },
              "name": {
                "type": "string"
              },
              "outputFormat": {
                "default": "markdown",
                "enum": [
                  "markdown",
                  "json",
                  "csv"
                ],
                "type": "string"
              },
              "reportId": {
                "description": "Provide to update an existing saved report.",
                "type": "string"
              },
              "reportType": {
                "description": "Advanced report type.",
                "enum": [
                  "adUnit",
                  "dimensions",
                  "customData"
                ],
                "type": "string"
              },
              "start": {
                "type": "string"
              },
              "timeZone": {
                "description": "IANA timezone for scheduled delivery.",
                "type": "string"
              },
              "toAddress": {
                "description": "Email address the report is delivered to.",
                "format": "email",
                "type": "string"
              },
              "utmHourlyBreakdown": {
                "type": "boolean"
              },
              "utms": {
                "description": "customData (UTM) reports only.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "reportType",
              "toAddress",
              "immediateRun"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": true,
            "readOnlyHint": false
          }
        },
        {
          "name": "delete_sulvo_advanced_report",
          "description": "Delete a saved Sulvo advanced report by id. Requires SULVO_API_KEY (with the reports:write scope) in the server environment.",
          "inputSchema": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "additionalProperties": false,
            "properties": {
              "reportId": {
                "description": "The advanced report id to delete.",
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "reportId"
            ],
            "type": "object"
          },
          "annotations": {
            "destructiveHint": true,
            "openWorldHint": false,
            "readOnlyHint": false
          }
        }
      ]
    },
    "name": "audit",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "npm",
        "identifier": "publisher-revenue-audit-mcp",
        "version": "0.2.1",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/sulvo-audit.json",
    "popularity": {
      "npmWeekly": 46
    },
    "registryName": "com.sulvo.publisher-revenue-audit/audit",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://publisher-revenue-audit.sulvo.com/mcp"
      }
    ],
    "repository": "",
    "reviewed": false,
    "slug": "sulvo-audit",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.sulvo.publisher-revenue-audit/audit",
    "summary": "Publisher revenue audit: ads.txt and ad-stack checks, Sulvo onboarding, and Boost ad-block recovery",
    "updatedAt": "2026-07-28T15:15:09Z",
    "url": "https://www.anchorterminal.com/tools/sulvo-audit",
    "vendor": "publisher-revenue-audit.sulvo.com",
    "vendorUrl": "https://sulvo.com",
    "version": "0.2.1",
    "websiteUrl": "https://sulvo.com",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
