Repository navigation
ToolsEnabled Data 0.8.9
A patch that changes how TE Data's files are laid out, so that the Claude Code plugin directory can validate it. TE Data is made for Claude Code. What the server, panel and watcher do is unchanged.
What was wrong
- The plugin directory's validator timed out on every attempt to validate 0.8.8. 0.8.8 stored every file under 256 KiB so that the validator could read all of them, which gave it about 7 MB of text to read, most of it bundled third-party library code. It validates 0.8.7, whose library code is in files it does not read.
What changed
- The bundled third-party libraries are in four files over 1 MiB again, which the validator does not read, and TE Data's own code stays in files of at most 256 KiB, which it reads in full:
- The server bundle is stored as 5 ES modules in
server/instead of 15: TE Data's code intedata-server-01-tedata.mjs,tedata-server-03-tedata.mjsandtedata-server.mjs, and the libraries intedata-server-02-vendor-mcp.mjs(ajv, zod, the MCP SDK and MCP Apps) andtedata-server-04-vendor-vega.mjs(Vega, Vega-Lite and d3). Three import statements of TE Data's server (node:fs/promises,node:path,node:url) that esbuild placed between ajv and zod stay in the first library file;tedata-server.mjsquotes them. The parts still run in the bundle's order. - The panel is stored as 5 files in
panel/instead of 13: TE Data's page and code inpanel-01-tedata.html,panel-03-tedata.htmlandpanel-05-tedata.html, and the libraries inpanel-02-vendor-mcp.html(after the licence notice the panel shows) andpanel-04-vendor-vega.html. The server joins them into the same page as 0.8.8's. - The licence inventory is one file again,
THIRD-PARTY-LICENSES.txt, as in 0.8.7, with 0.8.8's text. The validator reads it up to 256 KiB.
- The server bundle is stored as 5 ES modules in
- The directory's validator reports files it does not read as files it could not inspect. The README's "What it runs, writes and sends" answers that hold for the four library files, and its "Verifying a release" names each library file's packages and versions and says how to check them.
- Everything else in 0.8.8 is kept: deduplicate keeps source order, chart-block CSV times are UTC ISO text, the licence inventory names TE Data, and the renamed variables.
Who should update
Nobody needs to: TE Data behaves exactly as 0.8.8 did. Update to keep the release current.
How to install
claude plugin marketplace add ToolsEnabled/toolsenabled-data-claude-plugin
claude plugin install toolsenabled-data@toolsenabled-dataOpen Claude Code in your project folder, run /toolsenabled-data:setup once per computer, connect your data, then run /tedata. To try it first, follow the README's Try it section.
How to update
claude plugin marketplace update toolsenabled-data
claude plugin update toolsenabled-data@toolsenabled-dataRestart Claude Code. If you installed from a local copy, update that copy instead.
Download and verify
Download toolsenabled-data-0.8.9.tar.gz and toolsenabled-data-0.8.9.tar.gz.sha256 from this release. Archive SHA-256:
439488e29762220ebcdf461633f3c144c92ae7f265fba1a9941b9a67d5bbef46
sha256sum -c toolsenabled-data-0.8.9.tar.gz.sha256
tar -xzf toolsenabled-data-0.8.9.tar.gz
cd toolsenabled-data
node tools/verify-release.mjs
node --test test/*.test.mjsThe two tests in test/duckdb.test.mjs run when TEDATA_PYTHON names a Python that has DuckDB 1.5.6, and are skipped otherwise.
Release commit: 7c6c53d985f718147c264dbddbd2977af0539095. Tag: toolsenabled-data--v0.8.9.
How it was tested
- The public payload suite passes 50 of 50 tests with DuckDB 1.5.6, with 0 failures and 0 skips, on the source and again on the extracted archive. Without DuckDB the two DuckDB tests are skipped and the other 48 pass. The layout tests were changed for the new files: the server, panel, licence and file-size tests each failed on 0.8.8's layout and pass on 0.8.9's, and the README and credential-name tests follow the new file names.
- The 5 server parts, without the import and export lines each adds, join to the single server bundle byte for byte, and undoing the listed edits gives 0.8.7's
server/tedata-server.mjsexactly. TE Data's files hold nonode_modulesmodule, and the library files no TE Data module except the three import statements. The 5 panel files join to 0.8.8's panel byte for byte, which is 0.8.7's with one local variable renamed.THIRD-PARTY-LICENSES.txtis 0.8.8's four licence files joined, byte for byte (size, SHA-256 and its 68 carriage returns). - With DuckDB 1.5.6, the server gave answers identical to 0.8.8's apart from the version: initialize, tools/list (with and without the panel extension), resources/list, the panel page, and the README's Try it calls (connect, check, remove duplicates and save a copy, prepare a layout with chart, plot, grouped and table blocks, and export, down to every exported file). It starts as fast (a median of 248 and 261 ms for 0.8.8 and of 249 and 253 ms for 0.8.9, from start to the tool list, in two rounds of 7 runs each).
- All 37 listed files verify on the source and on the extracted archive. A changed byte in a library file or in the licence inventory, the inventory's CRLF line ends turned into LF, an extra server part, a
licensesfolder, or a second image in the plugin manifest folder is refused. claude plugin validate --strictpasses on the directory,plugin.json,marketplace.json,skillsandcommands, on the source and on the extracted archive. In a scratch Claude Code configuration,claude plugin marketplace addof the extracted archive andclaude plugin install toolsenabled-data@toolsenabled-datainstalled 0.8.9, andclaude mcp listshowed its server connected.- Two archive builds are byte-identical.
The internal 0.8.3 source suites are not distributed here and were not rerun. No browser, Windows or macOS suite was run, and no host that shows MCP App panels was used. Codex is not supported and was not run.
Support: support@toolsenabled.ai. Private vulnerability reporting: https://toolsenabled.ai/security/.