aleksuix avatar

VASTlint

aleksuix/vastlint

If you work with video ad tech, you've probably debugged a malformed VAST tag at 3am. This MCP server wraps a Rust validator that checks IAB VAST 2.0 through 4.3 against 121 spec rules. Connect Claude to vastlint.org/mcp and call validate_vast, inspect_vast, or fix_vast with structured JSON responses that include rule IDs and XPath locations. The same zero-dependency core powers bindings for Go, Erlang, and WASM, so you get consistent results whether you're validating in Claude, a bidder pipeline, or a browser. Sub-millisecond latency, Apache 2.0 licensed, and it catches the revenue-impacting errors before they hit production.

GitHub stars
19
tools
15
transport
STDIO, SSE
last updated
Oct 27, 2026

Install

From registry metadata
$ npx add-mcp https://vastlint.org/mcp --name vastlint --transport sse

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

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

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 15 tools

Verified live against the running server on Nov 6, 2026.

validate_vastValidate a VAST XML tag against the IAB VAST 2.0-4.3 specification. Returns all issues found with severity, rule ID, location, and spec reference. A document is valid when errors == 0, regardless of warning or info count. Use wrapper_depth when validating a document inside a w...2 params

Validate a VAST XML tag against the IAB VAST 2.0-4.3 specification. Returns all issues found with severity, rule ID, location, and spec reference. A document is valid when errors == 0, regardless of warning or info count. Use wrapper_depth when validating a document inside a w...

Parameters* required
wrapper_depthinteger
Current wrapper chain depth (0 = root document). Default: 0.default: 0
xml*string
Raw VAST XML string to validate.
validate_vast_urlFetch a VAST tag from a URL and validate it. Handles redirects. Use max_depth to control how deep wrapper chains are followed (default 5, per IAB VAST 4.x recommendation). AI agents typically receive VAST URLs rather than raw XML -- use this tool for that case.2 params

Fetch a VAST tag from a URL and validate it. Handles redirects. Use max_depth to control how deep wrapper chains are followed (default 5, per IAB VAST 4.x recommendation). AI agents typically receive VAST URLs rather than raw XML -- use this tool for that case.

Parameters* required
max_depthinteger
Maximum wrapper chain depth to follow. Default: 5 (IAB VAST 4.x recommendation).default: 5
url*string
URL of a VAST tag to fetch and validate.
inspect_vastFollow a VAST wrapper chain from a URL, fetching and validating every hop. Returns each hop as a structured object: AdSystem, AdTitle, Duration, impression count, tracking event count, media files (with MIME type, dimensions, bitrate, URL), companion count, and per-hop validat...2 params

Follow a VAST wrapper chain from a URL, fetching and validating every hop. Returns each hop as a structured object: AdSystem, AdTitle, Duration, impression count, tracking event count, media files (with MIME type, dimensions, bitrate, URL), companion count, and per-hop validat...

Parameters* required
max_depthinteger
Maximum wrapper hops to follow before stopping. Default: 5 (IAB VAST 4.x recommendation).default: 5
url*string
URL of the first VAST tag in the chain to inspect.
list_rulesList the full catalog of VAST validation rules available in vastlint. Returns rule IDs, default severities, and descriptions. Call this once and cache the result -- the catalog is static. Use rule IDs from this list with explain_rule for full details and fix guidance.

List the full catalog of VAST validation rules available in vastlint. Returns rule IDs, default severities, and descriptions. Call this once and cache the result -- the catalog is static. Use rule IDs from this list with explain_rule for full details and fix guidance.

No parameters. Call it with no arguments.

explain_ruleGet full details for a specific VAST validation rule: description, spec reference, severity, what triggers it, and how to fix it. Use rule IDs from list_rules. This is the primary tool for understanding and fixing VAST issues flagged by validate_vast.1 params

Get full details for a specific VAST validation rule: description, spec reference, severity, what triggers it, and how to fix it. Use rule IDs from list_rules. This is the primary tool for understanding and fixing VAST issues flagged by validate_vast.

Parameters* required
rule_id*string
Rule ID to explain, e.g. "VAST-4.1-adservingid-missing". Use list_rules to get valid IDs.
fix_vastAuto-fix a VAST XML tag. Applies all deterministic, safe fixes: HTTP → HTTPS upgrades in all URL-bearing elements, and removal of deprecated attributes. Returns the repaired XML, a list of every fix applied (rule ID + description + path), and any remaining issues that require...2 params

Auto-fix a VAST XML tag. Applies all deterministic, safe fixes: HTTP → HTTPS upgrades in all URL-bearing elements, and removal of deprecated attributes. Returns the repaired XML, a list of every fix applied (rule ID + description + path), and any remaining issues that require...

Parameters* required
wrapper_depthinteger
Current wrapper chain depth (0 = root document). Default: 0.default: 0
xml*string
Raw VAST XML string to auto-fix.
get_adcp_capabilitiesAdCP protocol discovery. Returns the AdCP version, supported protocols, and governance capabilities of this vastlint agent. Call this first when integrating vastlint into an AdCP creative pipeline — it declares which VAST creative features can be evaluated (spec compliance, HT...3 params

AdCP protocol discovery. Returns the AdCP version, supported protocols, and governance capabilities of this vastlint agent. Call this first when integrating vastlint into an AdCP creative pipeline — it declares which VAST creative features can be evaluated (spec compliance, HT...

Parameters* required
adcp_major_versioninteger
AdCP major version the caller's payloads conform to. When omitted, assumes highest supported version (3).
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
protocolsarray
Filter to specific protocol names. When omitted, returns all supported protocols.
list_content_standardsAdCP content-standards specialism. Lists content governance standards. When called with an 'account' object, returns buyer-defined standards stored for that brand. Without an account, returns the built-in catalog of VAST-relevant standards. Supports cursor-based pagination via...5 params

AdCP content-standards specialism. Lists content governance standards. When called with an 'account' object, returns buyer-defined standards stored for that brand. Without an account, returns the built-in catalog of VAST-relevant standards. Supports cursor-based pagination via...

Parameters* required
accountobject
Buyer account context (brand domain + operator).
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
max_resultsinteger
Legacy top-level alias.
page_tokenstring
Legacy top-level alias.
paginationobject
Cursor-based pagination controls. Preferred over top-level max_results/page_token.
create_content_standardsAdCP content-standards specialism. Creates a new set of content quality policies for a brand. Policies include brand safety rules, imagery quality requirements, and compliance constraints. Returns a standards_id that can be used with calibrate_content and validate_content_deli...5 params

AdCP content-standards specialism. Creates a new set of content quality policies for a brand. Policies include brand safety rules, imagery quality requirements, and compliance constraints. Returns a standards_id that can be used with calibrate_content and validate_content_deli...

Parameters* required
account*object
Buyer account that owns this content standard (brand domain required).
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
idempotency_keystring
Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without creating a duplicate.
policies*array
Array of content quality policies. Each policy has an ID, enforcement level (must/should/may), and natural-language rule text.
scopeobject
Optional scope constraints: restrict policies to specific languages or channels.
get_content_standardsAdCP content-standards specialism. Retrieves the full details of a specific content standard, including all policies and their enforcement levels. Requires Bearer authentication.3 params

AdCP content-standards specialism. Retrieves the full details of a specific content standard, including all policies and their enforcement levels. Requires Bearer authentication.

Parameters* required
accountobject
Buyer account context. Scopes the lookup to a specific brand.
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
standards_id*string
ID of the content standard set to retrieve. Returned by create_content_standards.
update_content_standardsAdCP content-standards specialism. Updates the policies on an existing content standard set. The supplied policies array replaces the existing policy set. Requires Bearer authentication.5 params

AdCP content-standards specialism. Updates the policies on an existing content standard set. The supplied policies array replaces the existing policy set. Requires Bearer authentication.

Parameters* required
accountobject
Buyer account context. Scopes the update to a specific brand.
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
idempotency_keystring
Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without creating a duplicate.
policies*array
Replacement policy array. Fully replaces the existing policies on the standard set.
standards_id*string
ID of the content standard set to update. Returned by create_content_standards.
delete_content_standardsAdCP content-standards specialism. Permanently removes a content standard set. Callers relying on the standards_id for calibrate_content or validate_content_delivery should retire those integrations first. Requires Bearer authentication.4 params

AdCP content-standards specialism. Permanently removes a content standard set. Callers relying on the standards_id for calibrate_content or validate_content_delivery should retire those integrations first. Requires Bearer authentication.

Parameters* required
accountobject
Buyer account context. Scopes the deletion to a specific brand.
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
idempotency_keystring
Optional unique key to make this request idempotent. Re-submitting the same key returns the original result instead of re-evaluating a since-changed state.
standards_id*string
ID of the content standard set to delete. Returned by create_content_standards.
calibrate_contentAdCP content-standards specialism. Evaluates a creative artifact against a content standard set before delivery. Returns a per-policy verdict and an overall pass/fail result. Use this as a pre-flight check before launching a campaign. Requires Bearer authentication.5 params

AdCP content-standards specialism. Evaluates a creative artifact against a content standard set before delivery. Returns a per-policy verdict and an overall pass/fail result. Use this as a pre-flight check before launching a campaign. Requires Bearer authentication.

Parameters* required
accountobject
Buyer account context. Scopes the evaluation to a specific brand.
artifact*object
Creative artifact to evaluate: metadata and asset URLs (image, video) to check against each policy.
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
idempotency_keystring
Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without re-evaluating.
standards_id*string
ID of the content standard set to evaluate against. Returned by create_content_standards.
validate_content_deliveryAdCP content-standards specialism. Validates that delivered creatives met the content standards. Accepts delivery records with creative references and returns per-record compliance status plus an overall summary. Requires Bearer authentication.4 params

AdCP content-standards specialism. Validates that delivered creatives met the content standards. Accepts delivery records with creative references and returns per-record compliance status plus an overall summary. Requires Bearer authentication.

Parameters* required
accountobject
Buyer account context. Scopes the validation to a specific brand.
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
records*array
Delivery records to validate. Each record references a creative artifact that was delivered.
standards_id*string
ID of the content standard set to validate delivery against. Returned by create_content_standards.
list_creativesAdCP creative governance. Lists creatives known to this agent. For a validation-only agent like vastlint, this always returns an empty collection — creatives are validated on demand via validate_vast rather than stored. Requires Bearer authentication.3 params

AdCP creative governance. Lists creatives known to this agent. For a validation-only agent like vastlint, this always returns an empty collection — creatives are validated on demand via validate_vast rather than stored. Requires Bearer authentication.

Parameters* required
contextobject
Caller-supplied context object. Echoed back unchanged in the response.
max_resultsinteger
Maximum number of creatives to return per page.
page_tokenstring
Opaque pagination cursor.

Sponsors

Readme

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.


View the full README on GitHub

Details

Repository
github.com/aleksuix/vastlint
Package
https://github.com/aleksUIX/vastlint/releases/download/v0.16.2/vastlint-mcp-linux-x86_64.tar.gz
Transport
STDIO, SSE
Registry
MCP registry, active
Tools verified
Nov 6, 2026