audit

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

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
89%
이름 품질
93%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (10)

  • LOWTool 'get_sulvo_signup_status' description lacks action verbget_sulvo_signup_status에서
  • LOWTool 'get_sulvo_revenue_onboarding_status' name length outside 3-30 rangeget_sulvo_revenue_onboarding_status에서
  • LOWTool 'review_sulvo_placement_recommendations' name length outside 3-30 rangereview_sulvo_placement_recommendations에서
  • LOWTool 'get_sulvo_installation_instructions' name length outside 3-30 rangeget_sulvo_installation_instructions에서
  • LOWTool 'verify_sulvo_placement_installation' name length outside 3-30 rangeverify_sulvo_placement_installation에서
  • LOWTool 'submit_sulvo_activation_workspace' name length outside 3-30 rangesubmit_sulvo_activation_workspace에서
  • LOWTool 'get_sulvo_activation_smoke_status' name length outside 3-30 rangeget_sulvo_activation_smoke_status에서
  • LOWTool 'get_publisher_revenue_audit_checklist' name length outside 3-30 rangeget_publisher_revenue_audit_checklist에서
  • LOWTool 'get_publisher_monetization_benchmarks' name length outside 3-30 rangeget_publisher_monetization_benchmarks에서
  • LOWTool 'create_sulvo_interstitial_units' name length outside 3-30 rangecreate_sulvo_interstitial_units에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~8,486토큰 (도구 정의)
~1.8 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 6.63%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

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

실행 가능한 패키지

npmpublisher-revenue-audit-mcp0.2.1stdio

원격 엔드포인트

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

할 수 있는 일

도구 목록

도구 (41)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢check_https_certificate(domain, outputFormat)

Check a publisher domain for HTTPS and certificate issues: expired/untrusted/hostname-mismatch certs, HTTPS down, HTTP that does not upgrade, and certs expiring within 14 days. Does not write a finding when both HTTP and HTTPS are unreachable.

입력 스키마

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

Free top-of-funnel scan: could a buyer agent find and buy this publisher? Checks adagents.json, standardized taxonomy tagging, audience segments in a readable schema, and a product/deals catalog. Returns what a buyer agent would see and what it cannot.

입력 스키마

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

Check whether robots.txt or a live probe blocks AmazonAdBot / Google ad crawlers. robots.txt Disallow and Amazon Crawl-delay are high-confidence fails. A WAF 403 against our scanner is a medium-confidence warn that needs verification.

입력 스키마

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

Instructions for setting up Sulvo Boost: first-party serving from the publisher's own CDN that recovers ad-blocked impressions. Covers Cloudflare, AWS and Fastly, plus the WordPress plugin for publishers who would rather not use a terminal.

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

Import connected provider units. Input requires provider and expectedVersion.

입력 스키마

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

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

입력 스키마

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

Save a placement revision. Input requires expectedVersion and payload.

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

Submit the proven revision. Input requires expectedVersion and revisionId.

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

Run a public publisher revenue-readiness screen using directional public evidence. Audits ad stacks, ads.txt hygiene, consent readiness, PageSpeed metrics, and unblocked premium ad unit opportunities (such as Sulvo) to recover lost yield.

입력 스키마

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

Submit an unauthenticated Sulvo account application lead through the current signup API. Audit tools remain available without login, API key, or OAuth; ad-unit generation should wait for Sulvo account approval.

입력 스키마

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 1,
      "description": "Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "Applicant email address Sulvo should use for follow-up."
    },
    "outputFormat": {
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ],
      "default": "markdown"
    }
  },
  "required": [
    "domain",
    "email"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴start_sulvo_signup(domain, email, monthlyPageviews, outputFormat)

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

입력 스키마

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

Run normal Sulvo signup step 2: create the pending Sulvo user/account. The current signup backend requires a password before the account can continue to ads.txt and review.

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

Return the current signup status capability. The current signup API has no public approval-status endpoint, so this tool reports that limitation instead of guessing approval state.

입력 스키마

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

Explains how to complete Sulvo signup document review. Document submission is done in Sulvo onboarding - upload monthly earnings proof or connect an AdSense account - not through this connector, which has no access to the user's local files.

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

Create a Sulvo ad unit for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment, never passed as an argument — an account owner mints a write-scoped key in the Sulvo dashboard (Account Settings -> API key). The Sulvo account must be approved; the backend rejects unapproved accounts. Returns the created unit id and container root.

입력 스키마

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

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

입력 스키마

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

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

입력 스키마

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

Delete a Sulvo ad unit by id for an approved publisher. Requires SULVO_API_KEY (with the inventory:write scope) in the server environment. The key's account must own the unit; the backend enforces ownership.

입력 스키마

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

Fetch a Sulvo report (read-only). Requires SULVO_API_KEY in the server environment (a publisher generates it in the dashboard: Account Settings -> API key). Covers by-date, by-date-and-ad-unit, by-domain-and-ad-unit, bot-filtering, bot-scores, invalid-activity, direct-bidder-analysis, and ad-units-by-domain.

입력 스키마

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

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

입력 스키마

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

Create/update a Sulvo advanced report (adUnit, dimensions, or customData), run immediately (emailed) or on a recurring schedule. Requires SULVO_API_KEY (with the reports:write scope) in the server environment. Note: advanced reports are delivered by email, not returned inline.

입력 스키마

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

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

입력 스키마

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

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 41개
검증됨버전이 기록되지 않음도구 41개
검증됨버전이 기록되지 않음도구 41개