{
  "markdown": "# Publisher Revenue Audit MCP\n\nPublic CLI and MCP adapter for running a hosted publisher revenue-readiness screen, completing Sulvo signup, and preparing a verified site for activation while Google approval is pending.\n\nThe npm package is intentionally thin. The hosted audit service performs the private analysis server-side; this package ships only the adapter code, output formatting, remote client, and unauthenticated signup helpers.\n\n## Install\n\n```bash\nnpx -y -p publisher-revenue-audit-mcp publisher-revenue-audit example.com\n```\n\nFor MCP desktop clients that use stdio:\n\n```json\n{\n  \"mcpServers\": {\n    \"publisher-revenue-audit\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"-p\", \"publisher-revenue-audit-mcp\", \"publisher-revenue-audit-mcp\"]\n    }\n  }\n}\n```\n\nClients that support hosted MCP can connect directly to:\n\n`https://publisher-revenue-audit.sulvo.com/mcp`\n\nFor private/internal MCP deployments that should not be reachable from the public internet, use OpenAI Secure MCP Tunnel with a private server target.\n\n## CLI\n\n```bash\npublisher-revenue-audit example.com --json\npublisher-revenue-audit audit example.com --max-pages 2 --markdown\npublisher-revenue-audit issues https example.com --csv\npublisher-revenue-audit issues crawler example.com --json\npublisher-revenue-audit agentic example.com --json\npublisher-revenue-audit apply example.com --email publisher@example.com\n```\n\n## Boost\n\nSet up Sulvo Boost (first-party serving from your own CDN that recovers ad-blocked impressions):\n\n```bash\npublisher-revenue-audit boost --cdn cloudflare|aws|fastly\n```\n\nThe command uses the installer bundle shipped inside this package — npm has already\nintegrity-checked it on install — extracts it into the current directory, installs its\ndependencies, and runs it. It falls back to downloading from the hosted service only when the\nbundle is absent or you pass `--bundle-url` / set `SULVO_BOOST_BUNDLE_URL`; that download has\nnothing to verify it against, so the packaged copy is preferred. The installer asks for your zone/host and Sulvo account id (ai). MCP clients get the same guidance from the public `get_sulvo_boost_setup` tool.\n\nx402 agent payments and wallet/QR contributions are on by default and settle to the Treasury, automatically paid out to the publisher with their earnings at no fee — no wallet setup is needed. All three CDN bundles participate: Cloudflare and Fastly include the HTML agent gate; AWS covers x402 discovery + the paid content API (its lambdas only see `{base}/*` traffic).\n\nBoost options:\n\n- `--cdn cloudflare|aws|fastly`\n- `--dir path`\n- `--bundle-url URL`\n- `--receiver 0x…` — your USDC treasury for x402 agent payments and wallet contributions\n- `--contribution micropayment|paid-subscription|email-capture` — what the unblock mural asks a reader for\n- `--product-name NAME` — max 60 characters, named in the paid-subscription sign-in prompt\n- `--publisher-redirect-url URL` — http/https subscribe page; **required** with `--contribution paid-subscription`\n\n### Advanced settings are dashboard settings\n\n`--contribution`, `--product-name`, and `--publisher-redirect-url` are per-domain settings on\nyour Sulvo account, not installer or CDN values — the Boost worker reads them at runtime.\nSaving them requires a signed-in Sulvo dashboard session, which the CLI does not hold, so\n**the CLI validates these values and does not apply them.** It checks each one (and refuses\n`paid-subscription` without a redirect URL, because that combination makes the mural fall\nthrough to the pay button), then prints the exact values to enter:\n\n```bash\npublisher-revenue-audit boost --cdn cloudflare \\\n  --contribution paid-subscription \\\n  --product-name \"The Daily\" \\\n  --publisher-redirect-url https://example.com/subscribe\n```\n\nEnter them per domain in the Sulvo dashboard: Recover → Boost → choose the domain → Advanced\nsettings. Scripting a fleet of sites? Run the command per site to catch bad values early, then\napply the printed settings once per domain in the dashboard.\n\nSignup commands:\n\n```bash\npublisher-revenue-audit signup start example.com --email publisher@example.com\nSULVO_SIGNUP_PASSWORD=\"choose-a-strong-password\" \\\n  publisher-revenue-audit signup create-account example.com \\\n  --email publisher@example.com \\\n  --first-name Jane \\\n  --last-name Doe \\\n  --password-env SULVO_SIGNUP_PASSWORD \\\n  --monthly-pageviews 125000\npublisher-revenue-audit signup company --user-id returned-user-id --website example.com --country \"United States\"\npublisher-revenue-audit signup ads-txt --user-id returned-user-id\npublisher-revenue-audit signup verify-ads-txt --user-id returned-user-id\npublisher-revenue-audit signup status --user-id returned-user-id\npublisher-revenue-audit signup documents --user-id returned-user-id --adsense-file ./policy-center.png --earnings-file ./earnings.pdf --create-tagless-unit false\n```\n\nAfter signup and email verification, start the resumable setup journey:\n\n```bash\npublisher-revenue-audit onboarding login\npublisher-revenue-audit onboarding start example.com --audit-artifact-id returned-audit-id --goal demand --retag after-approval\npublisher-revenue-audit onboarding status returned-workspace-id\npublisher-revenue-audit onboarding connect-provider returned-workspace-id --provider gam\npublisher-revenue-audit onboarding import-units returned-workspace-id --provider gam --expected-version 1\npublisher-revenue-audit onboarding review-recommendations returned-workspace-id --expected-version 2 --data-json '{\"decisions\":[]}'\npublisher-revenue-audit onboarding save-plan returned-workspace-id --expected-version 3 --data-json '{\"payload\":{\"placements\":[{\"key\":\"hero\",\"sizes\":[[300,250]]}]}}'\npublisher-revenue-audit onboarding map-backup returned-workspace-id --expected-version 4 --stable-placement-id placement-1 --provider gam --provider-id unit-1\npublisher-revenue-audit onboarding lock returned-workspace-id --expected-version 5 --revision-id revision-id\npublisher-revenue-audit onboarding installation returned-workspace-id\npublisher-revenue-audit onboarding verify-installation returned-workspace-id\npublisher-revenue-audit onboarding preflight returned-workspace-id\npublisher-revenue-audit onboarding verify-ownership returned-workspace-id\npublisher-revenue-audit onboarding submit returned-workspace-id --expected-version 6 --revision-id revision-id\n```\n\nThe `--goal` flag records the publisher's #1 goal (`demand` for higher CPMs, `adblock-recovery` for Boost first-party recovery). With the demand goal, `--retag now` runs the full passback wizard immediately, while `--retag after-approval` submits the bare site for approval first (`onboarding submit-site` after a tag-free `verify-ownership`) and defers tagging until demand partners approve. Use `onboarding set-journey` to adjust the answers while the workspace is still in draft.\n\n`onboarding login` uses browser authorization-code PKCE with a local loopback callback. Use `--headless` only when a browser callback is unavailable; it starts the device flow explicitly. The scoped refreshable grant is stored only in the operating system credential store, never in a plaintext file. If secure storage is unavailable, set `SULVO_CONNECTOR_TOKEN` for that process or install the optional `keytar` dependency. The CLI and local stdio MCP adapter reuse the grant, refresh it 30 seconds before expiry, and retry one unauthorized request with the same idempotency key. They do not collect or store the Sulvo password.\n\nWhile Google approval is pending, the journey's demand-activation step (Relabe special connectors + Amazon) happens in the Sulvo dashboard under Revenue Setup → Activate demand; the CLI and MCP direct you there. Approval is the passive final gate — serving switches on automatically when it lands.\n\nEvery onboarding mutation returns its retry key. Reuse it with `--idempotency-key` after a timeout or disconnected client so the backend can return the original result instead of duplicating the operation.\n\nAudit options:\n\n- `--json`, `--markdown`, or `--markdown-and-json`\n- `--compact`\n- `--max-pages 1..5`\n- `--include-evidence` or `--no-evidence`\n- `--api-url URL`\n- `--api-timeout-ms MS`\n- `--out path`\n\nSignup options:\n\n- `--json` or `--markdown`\n- `--signup-api-url URL`\n- `--signup-timeout-ms MS`\n- `--out path`\n\n## MCP Tools\n\nThe public stdio MCP server exposes:\n\n- `run_publisher_revenue_audit`\n- `check_https_certificate`\n- `check_crawler_blocks`\n- `run_agentic_readiness_audit`\n- `get_sulvo_boost_setup`\n- `apply_for_sulvo_account`\n- `start_sulvo_signup`\n- `create_sulvo_signup_account`\n- `update_sulvo_signup_company`\n- `get_sulvo_signup_ads_txt`\n- `verify_sulvo_signup_ads_txt`\n- `get_sulvo_signup_status`\n- `submit_sulvo_signup_documents`\n- `start_sulvo_revenue_onboarding`\n- `get_sulvo_revenue_onboarding_status`\n- guided provider, placement, installation, preflight, ownership, submission, rollback, and smoke-status tools\n\nThe public MCP server does not read arbitrary local files. Document review from MCP returns dashboard instructions. The CLI document command reads only explicit paths supplied by the operator and enforces file-count and byte limits before upload.\n\n## Distribution Boundary\n\nThe npm package does not include the private local audit engine, private analysis modules, hosted HTTP backend, authenticated account/report clients, source maps, tests, or private docs.\n\nPublic installs call hosted Sulvo APIs. Audits, checklists, benchmarks, account applications, and signup remain unauthenticated. Saving site configuration requires a verified Sulvo account and narrow `onboarding:read`/`onboarding:write` consent. Production inventory and Sulvo demand remain disabled until the account, MCM relationship, and site are approved.\n\n## Development\n\n```bash\nnpm run build\nnpm test\nnpm run smoke:cli\nnpm run smoke:mcp\nnpm run check:public-package\n```",
  "bytes": 9833,
  "sha": "abea4767c81824ba9071a49a975e38c1906f06e7ec06e0687ec48988aa903fd9",
  "repo_slug": "",
  "fonte": "npm",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_sulvo_publisher_revenue_audit_audit_f5affaac/readme"
}