{
  "data": {
    "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"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/sulvo-audit",
    "json": "https://www.anchorterminal.com/tools/sulvo-audit.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/sulvo-audit.md",
    "slim": "https://www.anchorterminal.com/tools/sulvo-audit.min.md"
  },
  "markdown": "# audit\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by publisher-revenue-audit.sulvo.com (https://sulvo.com)\n- Listed because: It's published in the registry under publisher-revenue-audit.sulvo.com, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Publisher revenue audit: ads.txt and ad-stack checks, Sulvo onboarding, and Boost ad-block recovery\n\n## Facts\n\n- MCP registry: `com.sulvo.publisher-revenue-audit/audit` 0.2.1\n- Endpoint: https://publisher-revenue-audit.sulvo.com/mcp (streamable HTTP)\n- Package: npm `publisher-revenue-audit-mcp` (stdio)\n- Website: https://sulvo.com\n- npm downloads a week: 46\n- Registry entry updated: 2026-07-28\n\n## Tools\n\n- Tools it lists (41, about 9,894 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:24 UTC):\n  - `check_https_certificate` (read-only): Check a publisher domain for HTTPS and certificate issues: expired/untrusted/hostname-mismatch certs, HTTPS down, HTTP that does not upgrade, and certs…\n  - `run_agentic_readiness_audit` (read-only): 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…\n  - `check_crawler_blocks` (read-only): 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…\n  - `get_sulvo_boost_setup` (read-only): Instructions for setting up Sulvo Boost: first-party serving from the publisher's own CDN that recovers ad-blocked impressions. Covers Cloudflare, AWS and…\n  - `start_sulvo_revenue_onboarding` (writes): Create or resume a verified-account activation workspace after the public audit and signup steps.\n  - `get_sulvo_revenue_onboarding_status` (read-only): Return the backend-owned journey stage, readiness dimensions, and one next best action.\n  - `attach_sulvo_revenue_audit` (writes): Attach a current public revenue audit artifact. Input requires expectedVersion and auditArtifactId.\n  - `connect_sulvo_backup_provider` (writes): Return the GAM or AdSense authorization URL. Input requires provider set to gam or adsense.\n  - `import_sulvo_backup_units` (writes): Import connected provider units. Input requires provider and expectedVersion.\n  - `review_sulvo_placement_recommendations` (writes): Save accept, edit, or reject decisions. Input requires expectedVersion and decisions.\n  - `save_sulvo_placement_plan` (writes): Save a placement revision. Input requires expectedVersion and payload.\n  - `map_sulvo_placement_backup` (writes): Map a display placement backup. Input requires expectedVersion, stablePlacementId, provider, and providerId.\n  - `get_sulvo_installation_instructions` (read-only): Return installation values for the locked revision. Input is empty.\n  - `verify_sulvo_placement_installation` (writes): Verify every stable placement container and the inert loader for the locked revision.\n  - `lock_sulvo_placement_revision` (writes): Lock the exact mapped revision. Input requires expectedVersion and revisionId.\n  - `run_sulvo_activation_preflight` (writes): Run the complete bounded activation preflight for the locked workspace revision.\n  - `verify_sulvo_site_ownership` (writes): Verify the required ads.txt and inert Sulvo head-tag ownership evidence.\n  - `submit_sulvo_activation_workspace` (writes): Submit the proven revision. Input requires expectedVersion and revisionId.\n  - `submit_sulvo_site_for_approval` (writes): Retag-after-approval journeys: submit the bare site for Google approval (ads.txt ownership only, no tags). Input requires expectedVersion.\n  - `set_sulvo_onboarding_journey` (writes): Set or change the journey intake answers on the workspace. Input requires expectedVersion plus at least one of mode, goal, retagTiming.\n  - `rollback_sulvo_activation` (writes): Return the workspace domain to publisher-owned backup-only serving.\n  - `get_sulvo_activation_smoke_status` (read-only): Return active-probe, real-page, and remediation status for the latest activation attempt.\n  - `run_publisher_revenue_audit` (read-only): Run a public publisher revenue-readiness screen using directional public evidence. Audits ad stacks, ads.txt hygiene, consent readiness, PageSpeed metrics, and…\n  - `apply_for_sulvo_account` (writes): Submit an unauthenticated Sulvo account application lead through the current signup API. Audit tools remain available without login, API key, or OAuth; ad-unit…\n  - `start_sulvo_signup` (writes): Run normal Sulvo signup step 1: verify the publisher domain and create the unauthenticated signup lead.\n  - `create_sulvo_signup_account` (writes): 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…\n  - `update_sulvo_signup_company` (writes): Run normal Sulvo signup step 3: save optional company information for a pending Sulvo signup.\n  - `get_sulvo_signup_ads_txt` (read-only): Run normal Sulvo signup step 4a: fetch the ads.txt lines the publisher must add for site ownership verification.\n  - `verify_sulvo_signup_ads_txt` (writes): Run normal Sulvo signup step 4b: verify whether the submitted publisher domain has the required Sulvo ads.txt lines.\n  - `get_sulvo_signup_status` (read-only): Return the current signup status capability. The current signup API has no public approval-status endpoint, so this tool reports that limitation instead of…\n  - `submit_sulvo_signup_documents` (read-only): Explains how to complete Sulvo signup document review. Document submission is done in Sulvo onboarding - upload monthly earnings proof or connect an AdSense…\n  - `get_publisher_revenue_audit_checklist` (read-only): Return the public checklist and interpretation notes used by the publisher revenue-readiness screen.\n  - `get_publisher_monetization_benchmarks` (read-only): Get comparative yield and CPM industry benchmarks by publisher vertical to compare standard stacks (AdSense and managed wrappers) against Sulvo Premium Ad…\n  - `create_sulvo_ad_unit` (writes): 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…\n  - `create_sulvo_interstitial_units` (writes): Create Sulvo interstitial ad units (tagless) for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.\n  - `create_sulvo_auto_sticky_units` (writes): Create Sulvo auto-sticky ad units for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment.\n  - `delete_sulvo_ad_unit` (writes): 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…\n  - `get_sulvo_report` (read-only): 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).…\n  - `list_sulvo_advanced_reports` (read-only): List the saved Sulvo advanced reports for the account. Requires SULVO_API_KEY (with the reports:read scope) in the server environment.\n  - `save_sulvo_advanced_report` (writes): Create/update a Sulvo advanced report (adUnit, dimensions, or customData), run immediately (emailed) or on a recurring schedule. Requires SULVO_API_KEY (with…\n  - `delete_sulvo_advanced_report` (writes): Delete a saved Sulvo advanced report by id. Requires SULVO_API_KEY (with the reports:write scope) in the server environment.\n- How its tools read to an agent (0 errors, 36 warnings, 1 note, about 9,894 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC11 apply_for_sulvo_account: 1 parameter without a description: outputFormat\n  - warn TC11 attach_sulvo_revenue_audit: 1 parameter without a description: outputFormat\n  - warn TC11 check_crawler_blocks: 1 parameter without a description: outputFormat\n  - warn TC11 check_https_certificate: 1 parameter without a description: outputFormat\n  - warn TC11 connect_sulvo_backup_provider: 1 parameter without a description: outputFormat\n  - warn TC11 create_sulvo_ad_unit: 1 parameter without a description: outputFormat\n  - warn TC11 create_sulvo_auto_sticky_units: 1 parameter without a description: outputFormat\n  - warn TC11 create_sulvo_interstitial_units: 1 parameter without a description: outputFormat\n  - warn TC11 create_sulvo_signup_account: 9 parameters without a description: firstName, lastName, mixpanelId, monthlyPageviews, outputFormat, phone and 3 more\n  - warn TC11 get_sulvo_activation_smoke_status: 1 parameter without a description: outputFormat\n  - warn TC11 get_sulvo_installation_instructions: 1 parameter without a description: outputFormat\n  - warn TC11 get_sulvo_report: 1 parameter without a description: outputFormat\n  - warn TC11 get_sulvo_revenue_onboarding_status: 1 parameter without a description: outputFormat\n  - warn TC11 get_sulvo_signup_ads_txt: none of its 2 parameters has a description\n  - warn TC11 get_sulvo_signup_status: none of its 2 parameters has a description\n  - warn TC11 import_sulvo_backup_units: 1 parameter without a description: outputFormat\n  - warn TC11 list_sulvo_advanced_reports: its one parameter, outputFormat, has no description\n  - warn TC11 lock_sulvo_placement_revision: 1 parameter without a description: outputFormat\n  - warn TC11 map_sulvo_placement_backup: 1 parameter without a description: outputFormat\n  - warn TC11 review_sulvo_placement_recommendations: 1 parameter without a description: outputFormat\n  - warn TC11 rollback_sulvo_activation: 1 parameter without a description: outputFormat\n  - warn TC11 run_agentic_readiness_audit: 1 parameter without a description: outputFormat\n  - warn TC11 run_sulvo_activation_preflight: 1 parameter without a description: outputFormat\n  - warn TC11 save_sulvo_advanced_report: 8 parameters without a description: adRoots, dimensions, domains, end, name, outputFormat and 2 more\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/sulvo-audit.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "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"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "audit",
        "url": ""
      }
    ],
    "description": "audit, an MCP server by publisher-revenue-audit.sulvo.com, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Publisher revenue audit: ads.txt and ad-stack checks, Sulvo onboarding, and Boost ad-block recovery",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "audit",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/sulvo-audit",
    "published": "",
    "section": "indexed",
    "title": "audit: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/sulvo-audit"
  },
  "tokens": {
    "markdown": 2800,
    "slim": 2730
  },
  "version": 1
}
