# VASTlint

Checks VAST, VMAP and DAAST XML against IAB specs, then hands your agent rule IDs, XPath locations and a fix path.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 19
- Author: aleksUIX
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/aleksUIX/vastlint
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/vastlint

## What it does

Give the server an XML document or a tag URL and it answers with structured JSON: which rule broke, where in the tree, and which part of the spec covers it. The rule set has 246 entries covering required fields, schema, value formats, OMID and SIMID blocks, plus VMAP 1.0 and DAAST 1.0. Rules flagged with `$` carry direct revenue impact, so `vastlint check --fail-on-warning` in CI catches them before release.

Nothing runs on your machine. The transport is SSE at `vastlint.org/mcp`. Tools exposed are `validate_vast`, `validate_vast_url`, `inspect_vast`, `list_rules`, `explain_rule` and `fix_vast`. A Rust core with no runtime dependencies keeps each call fast.

SIMID support stops at the creative's XML envelope. Fetching the creative, reading frame headers and the `postMessage` handshake sit outside the core. Bid requests are a different job — `RTBlint` handles OpenRTB, `Pixellint` handles pixels and postbacks.

## Requirements
- Remote server: `https://vastlint.org/mcp`

## Install

### Claude Code (native platform)

**Platform CLI: remote server**
```bash
claude mcp add --transport sse vastlint https://vastlint.org/mcp
```

### Codex

**Codex**
- Codex connects MCP servers over stdio and streamable HTTP only, and this server speaks SSE

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "vastlint": {
            "url": "https://vastlint.org/mcp"
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "vastlint": {
            "type": "sse",
            "url": "https://vastlint.org/mcp"
        }
    }
}
```

### Gemini CLI

**Platform CLI: remote server**
```bash
gemini mcp add -t sse vastlint https://vastlint.org/mcp
```

## When to use it
- catch a broken VAST tag before the campaign goes live
- inspect a production tag URL and see which rule fires
- settle a tracking dispute by pointing at the specific spec clause
- run tag checks in CI and block releases on `$`-flagged errors
- repair creative XML from a rule ID instead of reading the whole spec

## Example prompts
- Validate this tag and list the rule IDs it trips: `<?xml version="1.0"?><VAST version="4.1"></VAST>`
- Fetch this tag URL and tell me what is wrong with it
- Explain the rule behind the `UniversalAdId` failure and patch the file

## Similar
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74559
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18727
- [SeleniumBase MCP](https://affpapa.org/en/nevibecode/mcp/seleniumbase-mcp.md) — MCP server · ★ 13169
- [mobile-mcp](https://affpapa.org/en/nevibecode/mcp/mobile-mcp.md) — MCP server · ★ 9946
- [e2e](https://affpapa.org/en/nevibecode/mcp/e2e.md) — MCP server · ★ 11912
- [mockserver](https://affpapa.org/en/nevibecode/mcp/mockserver.md) — MCP server · ★ 4996

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
