Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

VASTlint

by aleksUIXversion 0.16.2i★ –iComputer or cloud
Registry nameio.github.aleksUIX/vastlint

Install

Overview

Description from the maker (original English)

Validate VAST, VMAP, and DAAST ad tags against IAB specs. 246 rules, pure Rust core.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Computer or cloud
  • Transport: stdio, SSE
  • Category: Developer tools

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 2 of 2 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://vastlint.org/mcp

Download the maker’s .mcpb file

The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.

Run this in your terminal

claude mcp add --transport sse vastlint https://vastlint.org/mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "vastlint": {
      "url": "https://vastlint.org/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "vastlint": {
      "type": "sse",
      "url": "https://vastlint.org/mcp"
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://vastlint.org/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account aleksUIX, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • ✓ Pass

    Endpoint responds

    Responded in 80 ms (HTTP 200)

  • – Not applicable

    Sign-in with OAuth

    No sign-in needed

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Developer toolsi

  • More stars than 0% of the other 4930 servers in this category
  • Published to the registry more recently than 75% of the other 4930 servers in this category
  • Basic checks equal to or better than 100% of the other 4930 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is VASTlint safe?

It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.16.2) reached the registry 12 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: GitHub, Desktop Commander, Cloudflare MCP

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

GitHub

GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.

by githubWidely used★ 34.2KUpdated 5 days ago

Computer or cloud

Desktop Commander

MCP server for terminal commands, file operations, and process management

by wonderwhy-erWidely used↓ 709.6K/wk★ 10.2KUpdated 17 days ago

Runs on your computer

Cloudflare MCP

Cloudflare MCP servers

by cloudflareGrowing★ 4.4KUpdated 14 months ago

Runs in the cloud✓ mcp.cloudflare.com

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

VASTlint

Created by Aleksander Sekowski.

This repository contains the validation engine, CLI, bindings and gRPC reference server. Chrome and IDE extensions, MCP applications and frontend runtime packages are maintained separately in vastlint-tools.

Website & web validator: VAST tag validator Paste a VAST tag and get results in your browser, no install required.

A high-performance VAST XML validator built on a pure-Rust core. Checks ad tags against the IAB Tech Lab VAST specification so you don't have to read it. Over $30 billion in annual CTV and video ad spend flows through VAST XML, and malformed tags are one of the most common causes of lost impressions, broken tracking, and revenue discrepancies between platforms. There is no widely adopted open-source tool that validates VAST XML against the full IAB specification across all published versions.

The VASTlint tools repository ships a native MCP server, making VAST validation available as a callable tool from Claude, Cursor, the AAMP Buyer Agent SDK, or any MCP-compatible client. Connect to vastlint.org/mcp and call validate_vast, validate_vast_url, inspect_vast, list_rules, explain_rule, or fix_vast. Each tool returns structured JSON with rule IDs, XPath locations, and spec references.

Bindings for realtime ad pipelines: vastlint-go (embedded WebAssembly by default, optional native cgo engine), vastlint-java (gRPC client for JVM ad servers), vastlint-erlang (Elixir/Erlang DirtyCpu NIF), and a WASM npm package for Node.js and browsers. All bindings use the same Rust validation core. The CLI daemon also supports OTP port integrations.

Need a copy-paste frontend starting point? See the React drop-in example in the tools examples.

Validates VAST documents against:

  • IAB Tech Lab VAST 2.0, 3.0, 4.0, 4.1, 4.2, and 4.3 — structural rules derived from the published XSD schemas (W3C REC-xmlschema-1) and spec prose (RFC 2119 normative key words)
  • W3C XML 1.0 well-formedness — malformed documents are rejected before any spec rule runs
  • RFC 3986 URI syntax — all URL fields
  • IANA Media Types — MIME types on MediaFile, InteractiveCreativeFile, Mezzanine, and ClosedCaptionFile
  • ISO 4217 currency codes — Pricing elements
  • Ad-ID registry format — UniversalAdId
  • IAB Tech Lab SIMID 1.0, 1.0.1, 1.1, 1.2 — XML envelope for and nonlinear (the IAB-sanctioned VPAID replacement). Creative fetch, frame headers, and the postMessage handshake live in the VAST tester, not in vastlint-core or default check.
  • IAB Tech Lab OMID / Open Measurement compatibility in VAST — vendor format, duplicate vendor detection, OMID resource semantics, verification tracking validation, and pre-4.1 extension-carried compatibility blocks

246 rules across required fields, schema validation, structural correctness, security, consistency, deprecated features, ambiguous usage, value formats, SIMID validation, OMID validation, VMAP 1.0, and DAAST 1.0. Rules marked with $ have direct revenue impact - use vastlint check --fail-on-warning in CI to catch them before they reach production. See common errors for the ones that cost real money. New to VASTlint? Start with the tutorial.

The CTV Addendum 2024 is supported across its legacy extension encodings, SIMID creative extensions on 4.x, and Icon regs. Supplied payloads are validated by default.

Full rule reference with examples and fix instructions: VAST error rule reference · RULES.md

How rules are derived: Rule derivation methodology · METHODOLOGY.md

For adjacent checks, RTBlint validates OpenRTB bid requests and responses. Pixellint validates pixels, postbacks, tracking URLs, and conversion API payloads.

Enterprise readiness

Zero runtime dependencies in the core. vastlint-core has three compile-time dependencies (quick-xml, url, phf) and no runtime dependencies whatsoever — no async runtime, no regex engine, no schema interpreter. Rules are compiled Rust functions. There is no transitive dependency graph to audit, no CVE surface to track, and no supply chain to compromise at runtime.

Verifiable build provenance. All release artifacts are signed with SLSA Build Level 2 provenance via GitHub's native attestation store. Every binary, library, .vsix, and npm package can be verified cryptographically against the exact source commit that produced it. No developer machine is ever involved in producing release artifacts. SLSA L3 (hermetic, isolated signing) is in progress.

No data retention by default — and full self-hosting available. The VS Code extension and Chrome page-scan path process XML locally. Pasting a tag in the Chrome popup opens the hosted tester; that path follows the website policy. The CLI does not send tags unless you pass --contribute-sample. The hosted tester, inspector, validator, and MCP server at vastlint.org/mcp may store a redacted copy of tags you submit, so the rules can be improved; see vastlint.org/privacy. Local vastlint-mcp over stdio does not send tags. The RapidAPI /validate API and the gRPC sidecar still validate ephemerally. See Telemetry and sample contribution and PRIVACY.md for the Chrome extension policy.

For teams that require on-premise processing or air-gapped deployments, VASTlint runs entirely self-hosted: the CLI image (FROM scratch), the vastlint-grpc sidecar (aleksuix/vastlint-grpc:0.16.0), or the pre-built static musl binary. The Rust core has no network code: no callbacks, no telemetry, no license checks. The sidecar exposes partner tallies on /metrics (port 9090); scrape them yourself.

Apache 2.0 licensed. No CLA, no dual-license commercial upsell, no usage-based restrictions. Fork it, vendor it, embed it, redistribute it.

Dependency update automation. Dependabot monitors Cargo, npm, and GitHub Actions dependencies weekly and opens PRs automatically. Combined with cargo audit on every CI push and CodeQL static analysis on every push and PR, the dependency surface stays current without manual tracking.

Auditable. OpenSSF Scorecard runs weekly and publishes a public score. CII Best Practices badge covers vulnerability reporting, CI, fuzzing, and code review requirements. The Security Advisory channel provides a private disclosure path with a 48-hour acknowledgement SLA.

Fuzz-tested continuously. Three libFuzzer targets run on every CI push against the core validator and auto-fix engine. See the Fuzzing section below.

Performance

Benchmarked on Apple M4 (10-core), production-realistic VAST tags (17–44 KB):

Metric17 KB tag44 KB tag
Single-thread throughput2,747 tags/sec475 tags/sec
Single-thread latency363 µs2,104 µs
10-core throughput15,760 tags/sec2,635 tags/sec

A typical OpenRTB bid cycle takes 100–300 ms; validation adds less than 2.1% of that budget even on the heaviest tags. An SSAI pipeline doing 1,000 stitches/sec spends more time on DNS than on validating the VAST response.

No async runtime, no regex engine, no schema interpreter. Rules are compiled Rust functions. Three dependencies: quick-xml, url, and phf (compile-time hash maps).

Install

cargo install vastlint

CLI crate on crates.io: crates.io/crates/vastlint

Or download a pre-built binary from the releases page.

Docker

Pull the image from Docker Hub:

docker pull aleksuix/vastlint

Validate a file:

docker run --rm -v "$(pwd)":/data aleksuix/vastlint check /data/tag.xml

Pipe from stdin:

cat tag.xml | docker run --rm -i aleksuix/vastlint check -

JSON output:

docker run --rm -v "$(pwd)":/data aleksuix/vastlint check /data/tag.xml --format json

Validate a whole directory:

docker run --rm -v "$(pwd)/tags":/data aleksuix/vastlint check /data/*.xml

The image is built FROM scratch - a fully-static musl binary with no OS layer. Compressed size is under 5 MB. Cold-start to first result is under 10 ms.

Usage

# validate a file

vastlint check tag.xml

validate multiple files

vastlint check *.xml

read from stdin

cat tag.xml | vastlint check -

JSON output (one object per file, newline-delimited)

vastlint check tag.xml --format json

suppress colours

vastlint check tag.xml --no-color

exit 0 even on errors (useful in some CI setups)

vastlint check tag.xml --no-fail

opt in to anonymous usage telemetry (see Telemetry section below)

vastlint check tag.xml --telemetry

override the VAST version used for validation (ignores the version= attribute)

vastlint check tag.xml --vast-version 4.2

replace template macros before validation so URL

Only the beginning is shown; read the rest in the repo

Ask PopNx