Benchmarking ReaShield Sovereign on @modelcontextprotocol/sdk, CodeJackRabbit & BoxFleet
Measured before and after results for three JavaScript bundles: static REA observations, selected literal exposure, export counts, and tested behavior. The SDK bundle preserved 178 public exports in the recorded run.
90551ecc44ebee1a8c3c09c5145a55b708b89ba538162c02c2fc99268b12352c). The static analyzer was rea-agents@6.7.0. Each target was bundled to one JavaScript entrypoint before analysis; these counts describe that bundle and this analyzer, not the entire repository or every possible attack.
1. Why We Benchmarked the Official Model Context Protocol (MCP) SDK
We built and analyzed selected ESM entrypoints from three projects. The source package sizes below provide context; the measured unit in the table is one bundle per project:
@modelcontextprotocol/sdk@1.32.1: The selected bundle exposed 178 exports and yielded 90,693 AST nodes in the baseline REA analysis. The source package contained 349 files.CodeJackRabbit@0.3.0: High-performance polyglot security scanner with 168 exported symbols and 53,076 AST nodes.BoxFleet@0.3.0: Cloud/local sandbox orchestrator with 40 ESM exports. Three native artifacts (Windows x64, Linux x86_64, macOS arm64) received separate static checks; this bundle benchmark did not qualify their runtime behavior.
2. Static Analysis Before and After
We ran rea-agents@6.7.0 analyze-javascript-application --format json on each baseline bundle and its protected counterpart. Return shapes and endpoints are REA graph observations. Literal counts are exact matches against a fixed list of 6 to 8 strings per target. A zero count does not prove that an agent could not recover the underlying behavior.
| Bundle | State | AST nodes seen by REA | Return shapes seen | Endpoints seen | Selected literals visible |
|---|---|---|---|---|---|
| MCP TypeScript SDK 1.32.1 | Before | 90,693 | 19 | 1 | 7 / 7 |
| After | 1,760 (-98.1%) | 0 | 0 | 0 / 7 | |
| CodeJackRabbit 0.3.0 | Before | 53,076 | 155 | 8 | 8 / 8 |
| After | 1,680 (-96.8%) | 0 | 0 | 1 / 8 remains visible | |
| BoxFleet 0.3.0 | Before | 5,626 | 27 | 0 | 6 / 6 |
| After | 656 (-88.3%) | 0 | 0 | 0 / 6 |
3. Behavior and Timing Checks
The timing figures are single recorded runs, not repeated-sample latency estimates. The parity corpus exercised 4 scenarios for the SDK, 4 for CodeJackRabbit, and 2 for BoxFleet; export counts confirm presence of names, not individual behavior for every export.
| Bundle | Exports before | Exports after | Scenarios matched | Simulation before | Simulation after | Protection build |
|---|---|---|---|---|---|---|
| MCP TypeScript SDK | 178 | 178 | 4 / 4 | 4.056 ms | 3.089 ms | 466.24 ms |
| CodeJackRabbit | 168 | 168 | 4 / 4 | 4.633 ms | 1.628 ms | 385.86 ms |
| BoxFleet | 40 | 40 | 2 / 2 | 0.387 ms | 0.274 ms | 174.86 ms |
4. Interpretation
The static counts fell for all three selected bundles under this REA version. The fixed literal set was fully absent after protection in two bundles; one of eight CodeJackRabbit literals remained visible. The tested scenarios matched, and the recorded export names were present after protection. These observations do not establish complete source-code secrecy, broad behavioral parity, or resistance to all reverse-engineering methods.