Static pre-flight security linter for MCP server configs that returns evidence-backed risk verdicts without execution.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag โ we're steadily working through the catalog.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Calllint.
Your agent can run tools faster than you can review them.
CallLint is a pre-flight risk linter for MCP and agent-tool configs. It checks the blast radius before the tool runs: what each tool can read, write, execute, connect to, send, or mutate โ then returns an evidence-backed verdict (SAFE / REVIEW / BLOCK / UNKNOWN) before your agent ever loads the server.
It never executes, installs, or connects to the servers it judges.
Status: 1.9.1 stable CLI release. Actively hardened. Verdicts are heuristic decision support, not a safety guarantee. Read Limitations before relying on a verdict for a security decision.
An agent's power is the union of its tools' permissions. A single MCP server can add filesystem write, shell execution, network egress, or model-directed instructions to an autonomous agent โ usually described only by untrusted, tool-provided metadata. CallLint inspects that surface statically and tells you, with evidence, what you would be granting before you grant it.
--online (advisory only).CallLint runs thirteen static detectors over each server entry:
| Detector | Risk symbol | What it flags |
|---|---|---|
secretEnvKeys | ๐ Secrets | Env keys whose names imply credentials (tokens, keys, passwords), incl. docker inline -e KEY |
broadFilesystemPath | ๐ Files | Filesystem roots that grant broad read/write (/, ~, home, drive roots), incl. docker bind-mount host paths |
unknownRemote | ๐ Network | Remote/HTTP transports to unrecognized or unpinned hosts |
promptPoisoning | ๐ง Prompt | Model-directed instructions hidden in tool names, descriptions, or schemas |
hiddenInstructions | ๐ง Prompt | Hidden/obfuscated content (zero-width, bidi, tag-char, HTML comments) in model-visible metadata |
dangerousCommand | โ๏ธ Exec | Shell-out / interpreter / package-runner commands (bash -c, npx, โฆ) |
unverifiedLocalSource | โ๏ธ Exec | Local script/binary that is not a recognized package, pinned image, or remote |
externalMutation | โ๏ธ Action | Tools that send or mutate external state (email, messages, posts) |
messagingSend | โ๏ธ Action | Tools that send messages/email on your behalf (Slack, Twilio, SMTP, โฆ) |
oauthScope | โ๏ธ Action | OAuth scopes that are undeclared, broad, or expansive (admin, *, repo, โฆ) |
gatewayRuntime | โ๏ธ Action | Long-running gateway runtimes that proxy many downstream tools under one auth |
financialAction | ๐ธ Money | Payment / transfer / irreversible financial actions |
unpinnedPackage | ๐งฉ Supply | Unpinned package specs (@latest, no version) โ rug-pull surface |
Findings roll up into a risk class (S0 metadata-only โ S5 financial/irreversible) and an aggregate verdict per server and per config.
Drift detection (baseline / verify) records an approved risk surface and
flags rug-pulls (๐) โ a previously-approved server whose risk surface later
changed.
This list matters more than the feature list. CallLint is a pre-flight check, not a proof of safety.
.env or credential stores.x-calllint.tools.--online, and online results
are advisory โ they never upgrade a verdict toward SAFE.UNKNOWN is a real verdict: when CallLint cannot verify what a server will do,
it says so and never silently upgrades UNKNOWN to SAFE.
| CallLint is not | CallLint is |
|---|---|
| a runtime sandbox | a pre-run risk linter for agent-tool configs |
| a secret scanner (it never reads secret values) | a config-shape inspector that flags credential-shaped keys |
npm audit (known package CVEs) | a blast-radius check on the authority you are granting |
| a server source-code analyzer | a static config + tool-metadata analyzer |
| a safety certificate | heuristic decision support, not a safety guarantee |
| a replacement for human review | the start of a review, with evidence attached |
Requires Node.js โฅ 20. The published package is a single self-contained bundle
with zero runtime dependencies. calllint on the latest tag is the current
stable CLI release; @next carries release candidates and @preview
older previews.
Zero-config scanning โ discover and scan all your agent configs:
Manual path scanning โ scan a specific config file:
Output formats: default terminal, --compact, --json (stable schema),
--sarif (GitHub Code Scanning), --markdown (PR comments / GitHub Step
Summary), --html (self-contained report). The
diagnostics command emits a separate editor/agent-host JSON
(calllint.diagnostics.v0).
See CallLint running in CI on a deliberately risky config โ
calllint-demo-risky-mcp
publishes one Code Scanning alert per finding on every push.
The same engine and verdict semantics extend past MCP-config scanning to other points where an agent grants authority:
Receipts (calllint.receipt.v0) are a reporting layer derived from a scan โ
they prove which CallLint version produced which verdict over which input under
which policy. They are not a second scanner and never re-judge a verdict. A
receipt can carry an optional ed25519 signature; receipt keygen / receipt sign generate and sign one locally for development, and receipt verify
checks the signature when present (offline, with --public-key). A signature
proves provenance and integrity โ never safety.
Scanning tells you the blast radius; the Trust Gateway acts on it, safely. It resolves an agent-tool target to an immutable, digest-pinned identity, judges it deterministically, and emits a reversible install plan. Applying that plan is the only thing that ever writes live config: it re-validates every digest, writes atomically, verifies the result, and rolls back on failure. The gateway never executes, installs, or connects to the target it judges.
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/calllint-calllint)<a href="https://allmcps.com/mcp/calllint-calllint"><img src="https://allmcps.com/api/badge/calllint-calllint?style=directory" alt="Calllint on AllMCPs" /></a>