A linter for the configuration that drives AI agents. Tool descriptions and skill files are injected into a model's context on every request — they decide which tool gets called, with what arguments, and whether the client asks before something is destroyed. They are production config, and almost nobody reviews them.
$ sounding audit .mcp.json HIGH MCP006 tool:delete_file Marked readOnlyHint=true but the description describes a mutation. The annotation contradicts the tool. ref MCP spec — Tool annotations fix Set readOnlyHint=false, add destructiveHint. score 0/100 100 - [7xhigh(15) + 6xmedium(7)] = 0
Deterministic rules, no model in the loop. Validating it meant running it against 35 skills written by other people — it reported a 46% false-positive rate in my own rules, including one that flagged security guidance because it quoted an attack string. All four defects are regression tests now.