vastlint
Registry code: d1f9a2a6a20e4b0c
When the user asks to validate, lint, check, or fix a VAST, VMAP, or DAAST tag, call these tools. Do not send them to a website. Use validate_vast when the XML is in the conversation. Use validate_vast_url when they give a tag URL. Use inspect_vast to follow a wrapper chain hop-by-hop. Use list_rules, explain_rule, and fix_vast as needed. Public validation tools require no login. AdCP content-standards tools require a Bearer token. Tags sent to this hosted endpoint may be stored (identifiers stripped) to improve rules. Details: https://vastlint.org/privacy/. Use local vastlint-mcp over stdio…
- endpoint
- https://vastlint.org/mcp
- protocol
- streamable-http ·2025-03-26
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is vastlint live?
- Yes — it answered the hub's last check (checked 23m ago). It answered 100% of checks over the last 30 days.
- Is vastlint free to use?
- Partly — some of its tools are open, others need a key or payment.
- What tools does vastlint have?
- 15 tools: explain_rule, validate_vast_url, fix_vast, create_content_standards, update_content_standards, delete_content_standards, validate_vast, inspect_vast, ….
- Is vastlint safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.2%· all time 99.2%
last good check
of 15 tools
- degraded → live
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- live → degraded· timeout after 20000ms
- topic
- developer tools testing & qa
- used for
- validate a vast ad tag
- fix a vast xml tag
- follow a vast wrapper chain
- manage ad content standards
- takes → gives
- code, text → data, code
- tools
- 12 reads3 changes data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
list_rules reads open 23m ago
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.
{ "type": "object", "title": "EmptyObject", "$schema": "http://json-schema.org/draft-07/schema#" }arguments 5 linesget_adcp_capabilities reads open 23m ago
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, HTTPS enforcement, wrapper depth). Part of the Ad Context Protocol (AdCP 3.0) specification.
{ "type": "object", "title": "GetAdcpCapabilitiesInput", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "protocols": { "type": "array", "items": { "type": "string" }, "description": "Filter to specific protocol names. When omitted, returns all supported protocols." }, "adcp_major_version": { "type": "integer", "description": "AdCP major version the caller's payloads conform to. When omitted, assumes highest supported version (3)." } } }arguments 23 lineslist_content_standards reads open 23m ago
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 the 'pagination' object. Requires Bearer authentication: Authorization: Bearer <api_key>.
{ "type": "object", "title": "ListContentStandardsInput", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "account": { "type": "object", "properties": { "brand": { "type": "object", "properties": { "domain": { "type": "string" } } }, "operator": { "type": "string" } }, "description": "Buyer account context (brand domain + operator)." }, "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "page_token": { "type": "string", "description": "Legacy top-level alias." }, "pagination": { "type": "object", "properties": { "cursor": { "type": "string" }, "max_results": { "type": "integer", "maximum": 100, "minimum": 1 } }, "description": "Cursor-based pagination controls. Preferred over top-level max_results/page_token." }, "max_results": { "type": "integer", "maximum": 100, "minimum": 1, "description": "Legacy top-level alias." } } }arguments 53 lineslist_creatives reads auth-required 18h ago
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.
{ "type": "object", "title": "ListCreativesInput", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "page_token": { "type": "string", "description": "Opaque pagination cursor." }, "max_results": { "type": "integer", "maximum": 100, "minimum": 1, "description": "Maximum number of creatives to return per page." } } }arguments 22 linesvalidate_content_delivery reads auth-required 12h ago
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.
{ "type": "object", "title": "ValidateContentDeliveryInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "standards_id", "records" ], "properties": { "account": { "type": "object", "properties": { "brand": { "type": "object", "properties": { "domain": { "type": "string" } } }, "operator": { "type": "string" } }, "description": "Buyer account context. Scopes the validation to a specific brand." }, "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "records": { "type": "array", "items": { "type": "object", "required": [ "record_id" ], "properties": { "artifact": { "type": "object", "properties": { "assets": { "type": "array", "items": { "type": "object" } }, "artifact_id": { "type": "string" }, "description": { "type": "string" }, "property_rid": { "type": "string" } } }, "record_id": { "type": "string" } } }, "description": "Delivery records to validate. Each record references a creative artifact that was delivered." }, "standards_id": { "type": "string", "description": "ID of the content standard set to validate delivery against. Returned by create_content_standards." } } }arguments 72 linescalibrate_content reads auth-required 18h ago
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.
{ "type": "object", "title": "CalibrateContentInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "standards_id", "artifact" ], "properties": { "account": { "type": "object", "properties": { "brand": { "type": "object", "properties": { "domain": { "type": "string" } } }, "operator": { "type": "string" } }, "description": "Buyer account context. Scopes the evaluation to a specific brand." }, "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "artifact": { "type": "object", "properties": { "assets": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string" }, "type": { "type": "string" }, "width": { "type": "integer" }, "height": { "type": "integer" }, "alt_text": { "type": "string" }, "duration_ms": { "type": "integer" } } } }, "artifact_id": { "type": "string" }, "description": { "type": "string" }, "property_rid": { "type": "string" } }, "description": "Creative artifact to evaluate: metadata and asset URLs (image, video) to check against each policy." }, "standards_id": { "type": "string", "description": "ID of the content standard set to evaluate against. Returned by create_content_standards." }, "idempotency_key": { "type": "string", "description": "Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without re-evaluating." } } }arguments 82 linesget_content_standards reads auth-required 12h ago
AdCP content-standards specialism. Retrieves the full details of a specific content standard, including all policies and their enforcement levels. Requires Bearer authentication.
{ "type": "object", "title": "GetContentStandardsInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "standards_id" ], "properties": { "account": { "type": "object", "properties": { "brand": { "type": "object", "properties": { "domain": { "type": "string" } } }, "operator": { "type": "string" } }, "description": "Buyer account context. Scopes the lookup to a specific brand." }, "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "standards_id": { "type": "string", "description": "ID of the content standard set to retrieve. Returned by create_content_standards." } } }arguments 36 linesexplain_rule reads unknown 18h ago
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.
{ "type": "object", "title": "ExplainRuleInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "rule_id" ], "properties": { "rule_id": { "type": "string", "description": "Rule ID to explain, e.g. \"VAST-4.1-adservingid-missing\". Use list_rules to get valid IDs." } } }arguments 14 linesvalidate_vast_url reads unknown 9h ago
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.
{ "type": "object", "title": "ValidateVastUrlInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "URL of a VAST tag to fetch and validate." }, "max_depth": { "type": "integer", "format": "uint8", "default": 5, "minimum": 0, "description": "Maximum wrapper chain depth to follow. Default: 5 (IAB VAST 4.x recommendation)." } } }arguments 21 linesfix_vast reads unknown never probed
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 manual intervention. Always re-validate the returned xml with validate_vast to confirm no errors remain.
{ "type": "object", "title": "FixVastInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "xml" ], "properties": { "xml": { "type": "string", "description": "Raw VAST XML string to auto-fix." }, "wrapper_depth": { "type": "integer", "format": "uint8", "default": 0, "minimum": 0, "description": "Current wrapper chain depth (0 = root document). Default: 0." } } }arguments 21 linescreate_content_standards changes data unknown never probed
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_delivery. Requires Bearer authentication.
{ "type": "object", "title": "CreateContentStandardsInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "account", "policies" ], "properties": { "scope": { "type": "object", "properties": { "description": { "type": "string" }, "channels_any": { "type": "array", "items": { "type": "string" } }, "languages_any": { "type": "array", "items": { "type": "string" } } }, "description": "Optional scope constraints: restrict policies to specific languages or channels." }, "account": { "type": "object", "required": [ "brand" ], "properties": { "brand": { "type": "object", "required": [ "domain" ], "properties": { "domain": { "type": "string" } } }, "operator": { "type": "string" } }, "description": "Buyer account that owns this content standard (brand domain required)." }, "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "policies": { "type": "array", "items": { "type": "object", "required": [ "policy_id", "enforcement", "policy" ], "properties": { "policy": { "type": "string" }, "channels": { "type": "array", "items": { "type": "string" } }, "policy_id": { "type": "string" }, "enforcement": { "enum": [ "must", "should", "may" ], "type": "string" }, "policy_categories": { "type": "array", "items": { "type": "string" } } } }, "description": "Array of content quality policies. Each policy has an ID, enforcement level (must/should/may), and natural-language rule text." }, "idempotency_key": { "type": "string", "description": "Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without creating a duplicate." } } }arguments 104 linesupdate_content_standards changes data unknown never probed
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.
{ "type": "object", "title": "UpdateContentStandardsInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "standards_id", "policies" ], "properties": { "account": { "type": "object", "properties": { "brand": { "type": "object", "properties": { "domain": { "type": "string" } } }, "operator": { "type": "string" } }, "description": "Buyer account context. Scopes the update to a specific brand." }, "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "policies": { "type": "array", "items": { "type": "object", "required": [ "policy_id", "enforcement", "policy" ], "properties": { "policy": { "type": "string" }, "channels": { "type": "array", "items": { "type": "string" } }, "policy_id": { "type": "string" }, "enforcement": { "enum": [ "must", "should", "may" ], "type": "string" }, "policy_categories": { "type": "array", "items": { "type": "string" } } } }, "description": "Replacement policy array. Fully replaces the existing policies on the standard set." }, "standards_id": { "type": "string", "description": "ID of the content standard set to update. Returned by create_content_standards." }, "idempotency_key": { "type": "string", "description": "Optional unique key to make this request idempotent. Re-submitting the same key returns the original result without creating a duplicate." } } }arguments 81 linesdelete_content_standards changes data unknown never probed
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.
{ "type": "object", "title": "DeleteContentStandardsInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "standards_id" ], "properties": { "account": { "type": "object", "properties": { "brand": { "type": "object", "properties": { "domain": { "type": "string" } } }, "operator": { "type": "string" } }, "description": "Buyer account context. Scopes the deletion to a specific brand." }, "context": { "type": "object", "description": "Caller-supplied context object. Echoed back unchanged in the response.", "additionalProperties": true }, "standards_id": { "type": "string", "description": "ID of the content standard set to delete. Returned by create_content_standards." }, "idempotency_key": { "type": "string", "description": "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." } } }arguments 40 linesvalidate_vast reads unknown 9h ago
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 wrapper chain.
{ "type": "object", "title": "ValidateVastInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "xml" ], "properties": { "xml": { "type": "string", "description": "Raw VAST XML string to validate." }, "wrapper_depth": { "type": "integer", "format": "uint8", "default": 0, "minimum": 0, "description": "Current wrapper chain depth (0 = root document). Default: 0." } } }arguments 21 linesinspect_vast reads unknown 12h ago
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 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.
{ "type": "object", "title": "InspectVastInput", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "url" ], "properties": { "url": { "type": "string", "description": "URL of the first VAST tag in the chain to inspect." }, "max_depth": { "type": "integer", "format": "uint8", "default": 5, "minimum": 0, "description": "Maximum wrapper hops to follow before stopping. Default: 5 (IAB VAST 4.x recommendation)." } } }arguments 21 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idd1f9a2a6a20e4b0c.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/d1f9a2a6a20e4b0c/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/d1f9a2a6a20e4b0c?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.