Banner CheckAD-NETWORK PREFLIGHT
Open-source skillPython & NodeCodex · Claude · Cursor

Banner Check: the HTML5 banner validator for AI agents

Use the Banner Check skill and CLI with coding agents, native WebMCP with compatible browser agents, or the ChatGPT MCP preview for local checks and an explicitly shared result explanation.

ChatGPT & MCP

Developer preview

Check a banner inside ChatGPT using the same local validation engine, then choose whether to share a compact result for explanation.

  1. Ask ChatGPT to open Banner Check for your ad network.
  2. Choose a ZIP or HTML file inside the validator, or paste HTML there.
  3. Review the local report, then click Explain in ChatGPT to share a summary.

Your banner stays on your device. The MCP server provides public network requirements and the validator interface. ChatGPT receives only check categories and counts after you choose to share them; the integration cannot read conversation attachments.

The preview supports static checks. Use the web validator for live previews and automatic fixes.

The MCP service is deployed for developer testing. ChatGPT acceptance testing and public-directory publication are still in progress.

Read the ChatGPT setup guide

What is MCP?

Model Context Protocol lets ChatGPT discover tools from a service. Banner Check offers tools to open the validator, list supported networks, and look up their requirements. You can also compare network requirements, get check guidance, and learn about WebMCP. File processing happens inside the local interface.

Browser agents & WebMCP

Experimental browser support

Open Banner Check in a browser with native WebMCP support. A compatible browser agent can read network requirements, validate supplied HTML, or check the ZIP, HTML file, or pasted markup already loaded in your tab. Validation runs locally; Banner Check never uploads your creative. The invoking agent receives a compact result.

  • list_supported_networks — list networks and package limits.
  • get_network_requirements — read one network's rules.
  • validate_html_banner — check supplied markup without running its scripts.
  • get_current_validation — check the loaded banner and update the visible report.

WebMCP depends on your browser and agent client. The ordinary validator works when support is unavailable or browser policy prevents registration. These tools run in the website tab; the ChatGPT plugin uses a separate MCP Apps interface.

Read the WebMCP tool guide

Install the skill & CLI

Three ways to install, depending on your setup.

npx skills (recommended)

Auto-detects Codex, Claude Code, Cursor, and compatible agents, then installs the skill.

npx skills add viewst/validate-banner-skill

git clone (Codex)

Copy the skill into Codex's user-level Agent Skills directory by hand.

git clone https://github.com/viewst/validate-banner-skill
cp -r validate-banner-skill/skills/validate-banner ~/.agents/skills/

Claude Code plugin

Add the repo as a plugin marketplace, then enable validate-banner from /plugin.

/plugin marketplace add viewst/validate-banner-skill

Usage

The skill ships two runners: python3 validate.py (primary, zero-dependency) and node validate.mjs (fallback). Both take the same flags.

  • Auto-detect the network and validate a ZIP
    python3 validate.py banner.zip
  • Validate against one network
    python3 validate.py banner.zip --network amazon_2dsp
  • Compatibility matrix across every network
    python3 validate.py banner.zip --all
  • Auto-fix (strip external URLs, then compress to fit)
    python3 validate.py banner.zip --network amazon_2dsp --fix
  • Machine-readable output for CI
    python3 validate.py banner.zip --json
  • Node fallback (when Python is unavailable)
    node validate.mjs banner.zip --all

Exit codes

0
Pass, or warnings only
1
Validation errors (matrix mode: only when every network errors)
2
Usage or I/O error

Supported ad networks

The same 19 ad-network rulesets as the web validator. Open one for its full requirements. Animation timing is inspected statically: Viewst scene models are measured directly, while unknown dynamic JavaScript receives an informational manual-review note:

Auto-fix --fix

--fix strips non-whitelisted external URLs, then compresses images to fit the size limit, writing a new *_fixed file (non-destructive). Compression is lossy; the Python runner uses Pillow when available (pip install Pillow) and otherwise still performs the URL-strip step.

Open source

validate-banner is the same engine behind Banner Check, packaged for your terminal and CI. It's built by Viewst and published open source at github.com/viewst/validate-banner-skill.