{"name":"com.sulvo.publisher-revenue-audit/audit","slug":"publisher-revenue-audit-audit","title":null,"description":"Publisher revenue audit: ads.txt and ad-stack checks, Sulvo onboarding, and Boost ad-block recovery","url":"https://mcp.market/server/publisher-revenue-audit-audit","rating":null,"grade":"B","score":70,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":16,"stars":null,"forks":null,"downloads_week":36,"last_push_at":null,"license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T04:35:59.723Z","last_ok_at":"2026-11-04T04:35:59.723Z","latency_ms":256},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://sulvo.com","version":"0.2.1","remotes":[{"type":"streamable-http","url":"https://publisher-revenue-audit.sulvo.com/mcp"}],"packages":[{"registryType":"npm","identifier":"publisher-revenue-audit-mcp","version":"0.2.1","transport":{"type":"stdio"}}],"tools":[{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Primary publisher domain to submit for Sulvo account review. The current signup backend accepts root publisher domains."},"email":{"type":"string","format":"email","description":"Applicant email address Sulvo should use for follow-up."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["domain","email"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"attach_sulvo_revenue_audit","description":"Attach a current public revenue audit artifact. Input requires expectedVersion and auditArtifactId.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Publisher domain, for example example.com."},"outputFormat":{"type":"string","enum":["markdown","json","csv"],"default":"markdown"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Publisher domain, for example example.com."},"outputFormat":{"type":"string","enum":["markdown","json","csv"],"default":"markdown"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"connect_sulvo_backup_provider","description":"Return the GAM or AdSense authorization URL. Input requires provider set to gam or adsense.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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 -> API key). The Sulvo account must be approved; the backend rejects unapproved accounts. Returns the created unit id and container root.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Publisher domain the ad unit belongs to."},"type":{"type":"string","enum":["display","native_multi","sticky_display","sticky_mobile","sticky_display_custom","sticky_mobile_custom","sticky_video","interstitial_desktop","interstitial_mobile","offerwall"],"description":"Ad unit type."},"size":{"type":"object","properties":{"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0},"responsive":{"type":"string","minLength":1}},"additionalProperties":false,"description":"Ad size as width/height, or a responsive token like responsive_all. Required by the backend for most non-interstitial types."},"placement":{"type":"number","minimum":0,"maximum":1,"description":"Optional placement weight (0-1)."},"custom":{"type":"string","minLength":1,"description":"Optional custom unit name."},"focusedAd":{"type":"boolean","description":"Only valid for the display type."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["domain","type"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Publisher domain the units belong to."},"adTypes":{"type":"array","items":{"type":"string","enum":["sticky_display","sticky_mobile"]},"minItems":1,"description":"One or more sticky ad types to create."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["domain","adTypes"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Publisher domain the units belong to."},"adTypes":{"type":"array","items":{"type":"string","enum":["interstitial_desktop","interstitial_mobile"]},"minItems":1,"description":"One or more interstitial ad types to create."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["domain","adTypes"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Primary publisher root domain used in signup start."},"email":{"type":"string","format":"email","description":"Applicant email address."},"firstName":{"type":"string","minLength":1,"maxLength":30},"lastName":{"type":"string","minLength":1,"maxLength":30},"password":{"type":"string","minLength":6,"description":"Password for the pending Sulvo account. This is required by the current signup backend."},"monthlyPageviews":{"type":"number","exclusiveMinimum":0},"phone":{"type":"string"},"mixpanelId":{"type":"string"},"utmSource":{"type":"string"},"utmMedium":{"type":"string"},"utmContent":{"type":"string"},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["domain","email","firstName","lastName","password","monthlyPageviews"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"adId":{"type":"string","minLength":1,"description":"The ad unit id to delete."}},"required":["adId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"reportId":{"type":"string","minLength":1,"description":"The advanced report id to delete."}},"required":["reportId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"vertical":{"type":"string","enum":["news","sports","entertainment","technology","education","gaming","other"],"description":"Optional publisher vertical to retrieve benchmarks for. Defaults to other."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_publisher_revenue_audit_checklist","description":"Return the public checklist and interpretation notes used by the publisher revenue-readiness screen.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_sulvo_activation_smoke_status","description":"Return active-probe, real-page, and remediation status for the latest activation attempt.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cdn":{"type":"string","enum":["cloudflare","aws","fastly"],"description":"The CDN fronting the site; omit to get all three options."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_sulvo_installation_instructions","description":"Return installation values for the locked revision. Input is empty.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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 -> 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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"reportType":{"type":"string","enum":["by-date","by-date-and-ad-unit","by-domain-and-ad-unit","bot-filtering","bot-scores","invalid-activity","direct-bidder-analysis","ad-units-by-domain"],"description":"Which report to fetch."},"start":{"type":"string","description":"Start date (YYYY-MM-DD or ISO). Required by most date-bounded reports."},"end":{"type":"string","description":"End date (YYYY-MM-DD or ISO)."},"domains":{"type":"array","items":{"type":"string"},"description":"Filter to these publisher domains."},"adRoots":{"type":"array","items":{"type":"string"},"description":"Filter to these ad unit roots."},"adProvider":{"type":"string","description":"Optional provider filter (e.g. relabe, adsense)."},"directBidder":{"type":"string","description":"Required for direct-bidder-analysis: the bidder name."},"outputFormat":{"type":"string","enum":["markdown","json","csv"],"default":"markdown"}},"required":["reportType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_sulvo_revenue_onboarding_status","description":"Return the backend-owned journey stage, readiness dimensions, and one next best action.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["userId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["userId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"import_sulvo_backup_units","description":"Import connected provider units. Input requires provider and expectedVersion.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"outputFormat":{"type":"string","enum":["markdown","json","csv"],"default":"markdown"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"lock_sulvo_placement_revision","description":"Lock the exact mapped revision. Input requires expectedVersion and revisionId.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"map_sulvo_placement_backup","description":"Map a display placement backup. Input requires expectedVersion, stablePlacementId, provider, and providerId.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"review_sulvo_placement_recommendations","description":"Save accept, edit, or reject decisions. Input requires expectedVersion and decisions.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"rollback_sulvo_activation","description":"Return the workspace domain to publisher-owned backup-only serving.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Publisher domain, for example example.com."},"outputFormat":{"type":"string","enum":["markdown","json","csv"],"default":"markdown"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Publisher domain to screen, for example example.com. Private/local targets, raw IPs, internal hosts, and non-standard ports are rejected."},"vertical":{"type":"string","enum":["news","sports","entertainment","technology","education","gaming","other"],"description":"Optional publisher vertical used for interpretation."},"metrics":{"type":"object","properties":{"impressionsPerPageview":{"type":"number","exclusiveMinimum":0,"maximum":100},"impressionsPerSession":{"type":"number","exclusiveMinimum":0,"maximum":1000},"pageviewsPerSession":{"type":"number","exclusiveMinimum":0,"maximum":100000},"dashboardViewabilityRate":{"type":"number","minimum":0,"maximum":100},"fillRate":{"type":"number","minimum":0,"maximum":100},"averageCpm":{"type":"number","minimum":0,"maximum":100000},"revenuePerSession":{"type":"number","minimum":0,"maximum":100000},"monthlyPageviews":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Actual monthly pageview volume. When provided, the yield simulator uses this scale instead of the standard 100k baseline."},"monthlySessions":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Actual monthly session count. Used with pageviewsPerSession to derive scale when monthlyPageviews is not supplied directly."}},"additionalProperties":false,"description":"Optional publisher-supplied metrics used for directional revenue interpretation."},"options":{"type":"object","properties":{"format":{"type":"string","enum":["markdown","json","markdown_and_json"],"default":"markdown"},"compact":{"type":"boolean","default":false,"description":"When true with JSON output, return the compact agent-oriented report shape instead of the full report object."},"maxPages":{"type":"integer","minimum":1,"maximum":5,"default":2},"includeEvidence":{"type":"boolean","default":true},"enableBrowser":{"type":"boolean","default":false,"description":"When true, run optional Playwright diagnostics for rendered slots, provider-aware network/console errors, selected provider privacy-review signals, and bfcache signals."},"includeScreenshots":{"type":"boolean","default":false,"description":"When true with enableBrowser, save a full-page screenshot artifact using a relative artifact path."},"artifactsDir":{"type":"string","minLength":1,"default":"audit-artifacts","description":"Relative directory for optional artifacts. Absolute paths, current-directory output, and parent traversal are rejected."},"enablePageSpeed":{"type":"boolean","default":false,"description":"When true, request public PageSpeed/Core Web Vitals diagnostics."},"pageSpeedStrategy":{"type":"string","enum":["mobile","desktop"],"default":"mobile"},"concurrency":{"type":"integer","minimum":1,"maximum":5,"default":2,"description":"Maximum number of audit collection tasks to run at once."},"whiteLabel":{"type":"boolean","default":false,"description":"When true, format the audit report as a white-labeled pitch presentation for ad-ops consultants/agencies to present directly to their publisher clients."},"partnerId":{"type":"string","description":"Optional referral or partner tracking identifier embedded in call-to-action URLs."}},"additionalProperties":false,"description":"Optional output and audit controls."}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"run_sulvo_activation_preflight","description":"Run the complete bounded activation preflight for the locked workspace revision.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"reportType":{"type":"string","enum":["adUnit","dimensions","customData"],"description":"Advanced report type."},"toAddress":{"type":"string","format":"email","description":"Email address the report is delivered to."},"immediateRun":{"type":"boolean","description":"true to run now (emailed), false to only schedule (requires frequency)."},"start":{"type":"string"},"end":{"type":"string"},"domains":{"type":"array","items":{"type":"string"}},"adRoots":{"type":"array","items":{"type":"string"}},"dimensions":{"type":"array","items":{"type":"string","enum":["country","device","os"]}},"utms":{"type":"array","items":{"type":"string"},"description":"customData (UTM) reports only."},"utmHourlyBreakdown":{"type":"boolean"},"frequency":{"type":"string","enum":["daily","weekly","biweekly","monthly"],"description":"Required when immediateRun is false."},"timeZone":{"type":"string","description":"IANA timezone for scheduled delivery."},"name":{"type":"string"},"reportId":{"type":"string","description":"Provide to update an existing saved report."},"outputFormat":{"type":"string","enum":["markdown","json","csv"],"default":"markdown"}},"required":["reportType","toAddress","immediateRun"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"save_sulvo_placement_plan","description":"Save a placement revision. Input requires expectedVersion and payload.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0},"payload":{"type":"object","properties":{"placements":{"type":"array","items":{"type":"object","additionalProperties":{}},"minItems":1,"maxItems":50},"consentDeclaration":{"type":"boolean","description":"Attest that consent requirements are accounted for. Preflight requires true."},"runtimeDeclaration":{"type":"boolean","description":"Attest that runtime placement behavior has been reviewed. Preflight requires true."}},"required":["placements"],"additionalProperties":true}},"required":["expectedVersion","payload"],"additionalProperties":true,"description":"A revision containing from 1 to 50 placements plus the consent/runtime attestations preflight requires."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId","input"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"start_sulvo_revenue_onboarding","description":"Create or resume a verified-account activation workspace after the public audit and signup steps.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253},"auditArtifactId":{"type":"string","minLength":1,"maxLength":8192},"goal":{"type":"string","enum":["demand","adblock_recovery"],"description":"The publisher's #1 goal: increase demand and CPMs, or recover ad-blocked impressions (Boost)."},"retagTiming":{"type":"string","enum":["now","after_approval"],"description":"Demand goal only: retag now (requires passback/backup mapping) or after site approval (no passback)."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["domain"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"start_sulvo_signup","description":"Run normal Sulvo signup step 1: verify the publisher domain and create the unauthenticated signup lead.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"description":"Primary publisher root domain to submit for Sulvo signup."},"email":{"type":"string","format":"email","description":"Applicant email address."},"monthlyPageviews":{"type":"number","exclusiveMinimum":0,"description":"Optional expected monthly pageviews to carry into the response. The current lead API stores traffic during account creation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["domain","email"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"submit_sulvo_activation_workspace","description":"Submit the proven revision. Input requires expectedVersion and revisionId.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_sulvo_signup_company","description":"Run normal Sulvo signup step 3: save optional company information for a pending Sulvo signup.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"website":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"zip":{"type":"string"},"state":{"type":"string"},"country":{"type":"string"},"employeeCount":{"type":"number","exclusiveMinimum":0},"monthlyAdRevenue":{"type":"number","exclusiveMinimum":0},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["userId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"verify_sulvo_placement_installation","description":"Verify every stable placement container and the inert loader for the locked revision.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["userId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"verify_sulvo_site_ownership","description":"Verify the required ads.txt and inert Sulvo head-tag ownership evidence.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":128,"description":"Activation workspace identifier returned by the start or status tool."},"input":{"type":"object","additionalProperties":{},"default":{},"description":"Fields required by this journey action."},"idempotencyKey":{"type":"string","minLength":1,"maxLength":128,"description":"Optional retry key. Reuse it when retrying the same mutation."},"outputFormat":{"type":"string","enum":["markdown","json"],"default":"markdown"}},"required":["workspaceId"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":70,"grade":"B","scanned_at":"2026-09-24T17:27:06.478Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T17:27:06.406Z","components":{"code":{"score":25,"max":25,"notes":["37 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 580ms"]},"poisoning":{"score":15,"max":15,"notes":["41 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 19 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://publisher-revenue-audit.sulvo.com/mcp","reachable":true,"authRequired":false,"latencyMs":580,"serverInfo":{"name":"publisher-revenue-screen","version":"0.3.2"}}],"packages":[{"registryType":"npm","identifier":"publisher-revenue-audit-mcp","version":"0.2.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-07-28T15:14:19.428Z","weeklyDownloads":36}],"repo":{"found":false},"icon":{"url":"https://sulvo.com/favicon.ico","source":"site","width":32,"height":32},"presence":{"stars":null,"forks":null,"downloadsWeek":36,"license":"MIT","lastPushAt":null,"score":16}}}},"grade_history":[],"reviews":[]}