
Pixellint
io.github.aleksUIXv0.31.12Updated Oct 4, 2026
Validate pixels, postbacks, conversion API payloads, and tracking URLs with spec-backed findings.
Overview
Validates advertising pixels, postbacks, and conversion API payloads against vendor specs, returning structured findings an assistant can act on.
- What it does
- Pixellint is a spec-first validator for measurement artifacts such as tracking URLs, postbacks, and conversion API payloads. The MCP server exposes three tools: list_rulepacks, list_vendors (optionally filtered by category or host), and validate_artifact, which takes an artifact kind, the artifact itself, and optional claimed vendor, expansion state, and rulepack selections. Responses include structured findings with stable IDs, severities, evidence levels, and detected vendors, so an agent can act without parsing prose.
- When to use it
- Use it when an assistant needs to check whether a pixel, postback, or conversion API payload conforms to a vendor's documented contract, for example during QA of tracking setups or before shipping campaign changes. It is also useful for attributing an unrecognized tracking host to a vendor.
- Requirements
- Runs as a local stdio process installed with cargo install pixellint-mcp. No accounts, API keys, or environment variables are declared. Desktop only; no hosted MCP endpoint is offered.
Installation
In SourceWeft
- Open Pixellint in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Pixellint
[Rust] [crates.io] [npm] [docs.rs] [license]
Pixellint is a spec-first validator for pixels, postbacks, conversion API payloads, and other measurement artifacts. It runs in a terminal, in CI, and in agents, and every finding carries a stable id, a severity, an evidence level, and the document it came from.
Broken pixels cost attribution, QA time, and campaign money. The tooling that exists is fragmented: vendor-specific helpers, enterprise tag auditors, and schema linters that know nothing about ad tech. Pixellint is the open validation layer underneath all of that.
Server-side events are checked in the body, one event at a time:
Install
Or paste a URL into the playground at pixellint.org, which runs the same engine in your browser. Artifacts you test may be stored; see privacy. Vendor contracts are at pixellint.org/packs/. Guides for pixels, conversion APIs, and consent are at pixellint.org/docs/.
Start with the contracts people actually hit:
- Conversion API validator
- Pixel not firing
- Conversions API not working
- What is a conversion API
- Reddit CAPI
- DART Floodlight tags
- Facebook Pixel Helper vs Network
- Pinterest standard events
Use it
QA
Validate an inline artifact, a file with @path, or stdin with -:
Callers that already extracted many URLs (Vastlint, an HTML adapter) pass them as a document. Identical values validate once:
extracted.json is the wrapper in
docs/MULTI_ARTIFACT_SCHEMA.md, or a JSON array
of URL strings. Pixellint does not parse VAST, HTML, or GTM.
If the artifact is still a template with unexpanded macros, say so, and macro rules adjust:
CI
pixellint validate exits 0 when the artifact is clean or only produced
warnings, 1 when any error-severity finding is present, and 2 on a usage or
input problem.
version selects the CLI release (auto follows the action's own v* tag).
Linux and macOS runners, x86_64 and aarch64. The Action downloads a prebuilt
tarball from GitHub Releases.
Or install the CLI:
Agents
pixellint-mcp speaks MCP over stdio and exposes three tools. It does not
send artifacts; there is no hosted MCP on pixellint.org. Playground artifacts
on pixellint.org may be stored; see pixellint.org/privacy.
-
MCP Registry name:
mcp-name: io.github.aleksUIX/pixellint -
list_rulepacks -
list_vendors, optionally filtered bycategoryor attributing a singlehost -
validate_artifact, takingartifact_kind,artifact, and optionalclaimed_vendor,expansion_state,rulepacks,except_rulepacks
Responses include the structured findings, the detected vendors, and a severity summary, so an agent can act on the result without parsing prose.
Node and the browser
Library
Rulepacks
core runs on every URL-like artifact. Vendor packs run only when the artifact
targets their endpoints, so you get vendor checks without asking for them, and
nothing fires on an endpoint it does not understand. A conversion API body has
no endpoint to go by, so those packs claim it by the shape of the payload.
Vendor directory
Rulepacks cover 133 endpoint families across 77 vendors. The vendor directory covers the rest by attribution: 120 vendor rows and 299 hosts, so an unrecognized pixel still gets a name. Full inventory: docs/STANDARDS.md.
Directory entries make one claim, that a host belongs to a vendor. They carry
no parameter contracts, the finding is always info, and attribution never
changes an exit code. See docs/VENDOR_DIRECTORY.md.
Select packs per run:
Full rule inventory with citations: docs/STANDARDS.md.
Evidence levels
Findings say where their authority comes from, and you can hold packs to different standards accordingly:
normative: a formal standard such as the WHATWG URL Standard or an RFCofficial_vendor: a parameter contract the vendor publishes, with the URLofficial_template: vendor-published templates or SDK behaviorecosystem_reference: consistent real-world behavior the vendor generates in its own UI but does not documentheuristic: Pixellint's judgment, labeled as such
The manifest loader refuses to compile a pack that claims official_vendor
without citing documentation.
Custom rulepacks
Rulepacks are data, not code. First-party vendor packs are written in the same JSON format you can write for an internal endpoint:
The format is documented in docs/RULEPACK_SCHEMA.md.
Private pixels that only need a name, not a parameter contract, belong in a directory overlay:
The overlay uses the same entry shape as the built-in directory. New hosts only; it cannot steal a first-party host. Contribute an upstream host through a PR: CONTRIBUTING.md.
What Pixellint does not do
- It does not extract artifacts from documents.
html,js, andgtmare not validation kinds; the CLI exits 2 if you pass them. Callers such as Vastlint parse VAST, HTML, or GTM containers and hand Pixellint the URLs they found.pixellint validate-manywraps those extracted URLs. The document result model is in docs/MULTI_ARTIFACT_SCHEMA.md. - It does not fire requests or check whether an endpoint responds.
- It does not auto-fix. Findings carry fix hints; applying them is on you.
Evidence
Every rule is backed by tests: unit tests in crates/pixellint-core/src/, a
golden corpus in fixtures/ with one directory per rulepack, and integration
tests that drive the real CLI binary and the real MCP stdio transport.
Benchmark
In-process engine speed over the golden corpus, D1-shaped synthetic pixels, and large validate-many batches:
See bench/README.md.
Docs
- Standards and rule inventory
- Vendor directory
- npm package
- Rulepack manifest schema
- Architecture
- Roadmap
- Multi-artifact output model
License
Apache-2.0. Pixellint is not affiliated with or endorsed by any vendor named in its rulepacks; see NOTICE.
Source: README.md at commit 8e445d5
Tools
0Version history
1- v0.31.12LatestOct 4, 2026

