VASTlint
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Validate VAST, VMAP, and DAAST ad tags against IAB specs. 246 rules, pure Rust core.
| Author | io.github.aleksUIX |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 192 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"VASTlint": {
"url": "https://vastlint.org/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (15)
validate_vastread-onlyValidate 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 wrapper chain.
Parameters:
xml(required) — string — Raw VAST XML string to validate.wrapper_depth— integer — Current wrapper chain depth (0 = root document). Default: 0.
Hints: read-only yes · destructive no · idempotent yes · open-world no
validate_vast_urlread-onlyFetch 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:
url(required) — string — URL of a VAST tag to fetch and validate.max_depth— integer — Maximum wrapper chain depth to follow. Default: 5 (IAB VAST 4.x recommendation).
Hints: read-only yes · destructive no · idempotent no · open-world yes
inspect_vastread-onlyFollow 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 validation issues. The final InLine hop contains the actual creative. Use this to debug wrapper chains, verify creative assets, or analyse a full ad delivery path. max_depth defaults to 5 per IAB recommendation.
Parameters:
url(required) — string — URL of the first VAST tag in the chain to inspect.max_depth— integer — Maximum wrapper hops to follow before stopping. Default: 5 (IAB VAST 4.x recommendation).
Hints: read-only yes · destructive no · idempotent no · open-world yes
list_rulesread-onlyList 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.
Hints: read-only yes · destructive no · idempotent yes · open-world no
explain_ruleread-onlyGet 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:
rule_id(required) — string — Rule ID to explain, e.g. "VAST-4.1-adservingid-missing". Use list_rules to get valid IDs.
Hints: read-only yes · destructive no · idempotent yes · open-world no
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 manual intervention. Always re-validate the returned xml with validate_vast to confirm no errors remain.
Parameters:
xml(required) — string — Raw VAST XML string to auto-fix.wrapper_depth— integer — Current wrapper chain depth (0 = root document). Default: 0.
Hints: read-only no · destructive no · idempotent yes · open-world no
get_adcp_capabilitiesread-onlyAdCP 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, HTTPS enforcement, wrapper depth). Part of the Ad Context Protocol (AdCP 3.0) specification.
Parameters:
context— object — Caller-supplied context object. Echoed back unchanged in the response.protocols— array — Filter to specific protocol names. When omitted, returns all supported protocols.adcp_major_version— integer — AdCP major version the caller's payloads conform to. When omitted, assumes highest supported version (3).
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_content_standardsread-onlyAdCP 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 the 'pagination' object. Requires Bearer authentication: Authorization: Bearer <api_key>.
Parameters:
account— object — Buyer account context (brand domain + operator).context— object — Caller-supplied context object. Echoed back unchanged in the response.page_token— string — Legacy top-level alias.pagination— object — Cursor-based pagination controls. Preferred over top-level max_results/page_token.max_results— integer — Legacy top-level alias.
Hints: read-only yes · destructive no · idempotent yes · open-world no
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_delivery. Requires Bearer authentication.
Parameters:
account(required) — object — Buyer account that owns this content standard (brand domain required).policies(required) — array — Array of content quality policies. Each policy has an ID, enforcement level (must/should/may), and natural-language rule text.scope— object — Optional scope constraints: restrict policies to specific languages or channels.context— object — Caller-supplied context object. Echoed back unchanged in the response.idempotency_key— string — Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without creating a duplicate.
Hints: read-only no · destructive no · idempotent no · open-world no
get_content_standardsread-onlyAdCP content-standards specialism. Retrieves the full details of a specific content standard, including all policies and their enforcement levels. Requires Bearer authentication.
Parameters:
standards_id(required) — string — ID of the content standard set to retrieve. Returned by create_content_standards.account— object — Buyer account context. Scopes the lookup to a specific brand.context— object — Caller-supplied context object. Echoed back unchanged in the response.
Hints: read-only yes · destructive no · idempotent yes · open-world no
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.
Parameters:
standards_id(required) — string — ID of the content standard set to update. Returned by create_content_standards.policies(required) — array — Replacement policy array. Fully replaces the existing policies on the standard set.account— object — Buyer account context. Scopes the update to a specific brand.context— object — Caller-supplied context object. Echoed back unchanged in the response.idempotency_key— string — Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without creating a duplicate.
Hints: read-only no · destructive no · idempotent no · open-world no
delete_content_standardsdestructiveAdCP 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:
standards_id(required) — string — ID of the content standard set to delete. Returned by create_content_standards.account— object — Buyer account context. Scopes the deletion to a specific brand.context— object — Caller-supplied context object. Echoed back unchanged in the response.idempotency_key— string — 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.
Hints: read-only no · destructive yes · idempotent yes · open-world no
calibrate_contentread-onlyAdCP 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:
standards_id(required) — string — ID of the content standard set to evaluate against. Returned by create_content_standards.artifact(required) — object — Creative artifact to evaluate: metadata and asset URLs (image, video) to check against each policy.account— object — Buyer account context. Scopes the evaluation to a specific brand.context— object — Caller-supplied context object. Echoed back unchanged in the response.idempotency_key— string — Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without re-evaluating.
Hints: read-only yes · destructive no · idempotent no · open-world no
validate_content_deliveryread-onlyAdCP 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:
standards_id(required) — string — ID of the content standard set to validate delivery against. Returned by create_content_standards.records(required) — array — Delivery records to validate. Each record references a creative artifact that was delivered.account— object — Buyer account context. Scopes the validation to a specific brand.context— object — Caller-supplied context object. Echoed back unchanged in the response.
Hints: read-only yes · destructive no · idempotent no · open-world no
list_creativesread-onlyAdCP 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:
context— object — Caller-supplied context object. Echoed back unchanged in the response.page_token— string — Opaque pagination cursor.max_results— integer — Maximum number of creatives to return per page.
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.