Scan what your agents trust — in one command
Palanit Core is a zero-dependency scanner for the Model Context Protocol. Give it an MCP config or a tool manifest and it reads every tool the way your agent will — then flags the ones that would quietly betray it. It is free, open source, and designed to live in your terminal and your CI.
What Core detects
Tool-description poisoning
Hidden instructions in a tool's description that your agent will execute as if you wrote them.
Data exfiltration
Descriptions or schemas that steer the agent to send data or secrets to an external endpoint.
Hardcoded secrets
API keys, tokens and credentials committed into configs and manifests.
Invisible Unicode
Zero-width and bidirectional control characters that hide instructions from human review.
Unpinned packages
Servers launched with @latest or floating versions — a swap-in supply-chain risk.
Shell-exec tools
Tools that shell out, widening the blast radius of any single compromised call.
Non-TLS transport
Endpoints over http:// where tool traffic can be read or tampered with in transit.
Name-collision shadowing
Two tools with the same name, letting a malicious one shadow a trusted one.
Built for CI
Core exits with code 1 on any finding at HIGH severity or above, so a poisoned tool fails the build instead of reaching production. Machine-readable JSON output drops into any pipeline or dashboard.
Open by design
Every rule is readable and auditable. You can see exactly what Core considers dangerous, extend it with your own rules, and trust it precisely because you can inspect it.
Install & run
# Install (PyPI)
pip install palanit-core
# Scan an MCP config — fails CI on HIGH+
palanit scan mcp.config.json --fail-on HIGH
# Machine-readable output
palanit scan mcp.config.json --json > report.json