Skip to content

Releases: ToolsEnabled/toolsenabled-data-claude-plugin

ToolsEnabled Data 0.8.9

Choose a tag to compare

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 in tedata-server-01-tedata.mjs, tedata-server-03-tedata.mjs and tedata-server.mjs, and the libraries in tedata-server-02-vendor-mcp.mjs (ajv, zod, the MCP SDK and MCP Apps) and tedata-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.mjs quotes 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 in panel-01-tedata.html, panel-03-tedata.html and panel-05-tedata.html, and the libraries in panel-02-vendor-mcp.html (after the licence notice the panel shows) and panel-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 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-data

Open 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-data

Restart 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.mjs

The 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.mjs exactly. TE Data's files hold no node_modules module, 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.txt is 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 licenses folder, or a second image in the plugin manifest folder is refused.
  • claude plugin validate --strict passes on the directory, plugin.json, marketplace.json, skills and commands, on the source and on the extracted archive. In a scratch Claude Code configuration, claude plugin marketplace add of the extracted archive and claude plugin install toolsenabled-data@toolsenabled-data installed 0.8.9, and claude mcp list showed 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/.

ToolsEnabled Data 0.8.8

Choose a tag to compare

ToolsEnabled Data 0.8.8

A patch that makes every file of TE Data readable in full by the Claude Code plugin directory, and fixes the 2026-10-14 fresh-user re-test of 0.8.7. TE Data is made for Claude Code. What the server, panel and watcher do is unchanged, apart from the two fixes below.

What was wrong

  • The plugin directory's validator could not read three files in full and held them for review: the server bundle (3.2 MB) and the panel (3.0 MB) are over its 1 MiB read limit, and THIRD-PARTY-LICENSES.txt (458 KB) is over its 256 KiB limit.
  • It also held the plugin for "Uses a credential from the user's machine", naming the watcher, whose loop variable for a run's ids was called key, and tools/build-release.mjs, which built its archive name at run time. Neither reads a credential or sends anything.
  • "Make a copy of sample.csv without duplicate rows" reordered the rows: the copy started at 2026-01-02, and 2026-01-01 Oslo came 15th.
  • An exported chart block's data CSV wrote its time column as Unix seconds.
  • THIRD-PARTY-LICENSES.txt called the product "Bench".
  • The README listed the server changes made in the public payload only through 0.8.5.

What changed

  • No file of the plugin is larger than 256 KiB:
    • The server bundle is stored as 15 ES modules in server/, cut between top-level statements with no bundle text changed. tedata-server.mjs, the file Claude Code starts, holds TE Data's MCP tools and loads tedata-server-01-ajv.mjs to tedata-server-14-vega-lite.mjs. Each part first imports the part before it, so the parts run in the bundle's order, and then the names it uses from other parts.
    • The panel is stored as panel/panel-01.html to panel-13.html, which the server joins into one page when a host asks for the panel.
    • The licence texts are in licenses/javascript-1.txt, licenses/javascript-2.txt and licenses/duckdb.txt, which THIRD-PARTY-LICENSES.txt lists.
  • Deduplicate keeps the rows it keeps in their source order, for keep: "unique" and for "first" and "last".
  • A chart block's data CSV writes its time column as UTC ISO text, such as 2026-01-01T00:00:00.000Z, the time the chart's tooltip shows.
  • The licence inventory names ToolsEnabled Data (TE Data).
  • The watcher's loop variable is called field, and tools/build-release.mjs runs git archive with fixed arguments and builds no string at run time. Two local variables in TE Data's own server and panel code are renamed plainly. The watcher's output, the archives and the refusal messages are unchanged.
  • README: "What it runs, writes and sends" names every program TE Data starts, says that setup and the query worker run with Claude Code's environment so your own package index, proxy and certificate settings apply, that the panel connects nowhere, what the release tools do, and who publishes TE Data. ToolsEnabled is not affiliated with or endorsed by Anthropic.

Who should update

Anyone who removes duplicate rows or exports chart blocks gets source order and readable times. Everyone else gets the same behaviour from files that can be read in full; update to keep the release current.

How to install

claude plugin marketplace add ToolsEnabled/toolsenabled-data-claude-plugin
claude plugin install toolsenabled-data@toolsenabled-data

Open 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-data

Restart Claude Code. If you installed from a local copy, update that copy instead.

Download and verify

Download toolsenabled-data-0.8.8.tar.gz and toolsenabled-data-0.8.8.tar.gz.sha256 from this release. Archive SHA-256:

ac34b68d3ce0dc297d6cc356efe7cdb16cadb9dbf6728b62072a90f6f474f1c2
sha256sum -c toolsenabled-data-0.8.8.tar.gz.sha256
tar -xzf toolsenabled-data-0.8.8.tar.gz
cd toolsenabled-data
node tools/verify-release.mjs
node --test test/*.test.mjs

The 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: 15cb61398ad83a90bf7b6c7f37b494e7a3444277. Tag: toolsenabled-data--v0.8.8.

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. These are the 39 tests of 0.8.7 and 11 new ones, each of which failed before its change.
  • The 15 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.mjs exactly. The 13 panel parts join to 0.8.7's panel with one local variable renamed. THIRD-PARTY-LICENSES.txt's opening lines and the three licence files join to 0.8.7's inventory with TE Data named in four lines and no other byte changed (checked by size, SHA-256 and the 68 carriage returns of the two licence texts with CRLF line ends). The split tool re-parsed every part and checked that no bundle name is left unresolved and no imported name is assigned.
  • Before and after the split, with DuckDB 1.5.6, the server gave identical answers to initialize, tools/list (with and without the panel extension), resources/list and the panel resource, and to 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 278 ms before and 273 ms after, from start to the tool list).
  • Compared with 0.8.7, the only differences in those answers are the version, the deduplicate descriptions, the order of the rows a deduplicate step keeps, the chart CSV's time column and the panel's renamed variable.
  • All 58 listed files verify on the source and on the extracted archive. A changed byte in a server or panel part, an extra server part, or a second image in the plugin manifest folder is refused.
  • claude plugin validate --strict passes on the directory, plugin.json, marketplace.json, skills and commands, on the source and on the extracted archive. In a scratch Claude Code configuration, claude plugin marketplace add of the extracted archive and claude plugin install toolsenabled-data@toolsenabled-data installed 0.8.8, and claude mcp list showed its server connected.
  • Two archive builds are byte-identical, and the new tools/build-release.mjs writes the same archive as 0.8.7's did.

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/.

ToolsEnabled Data 0.8.7

Choose a tag to compare

ToolsEnabled Data 0.8.7

A patch for 0.8.6 from the 2026-10-13 fresh-user re-test. TE Data is made for Claude Code; the panel, Python workers and privacy notice are unchanged.

What was wrong

  • The tedata_data schema accepted a deduplicate step with columns and keep: "unique", and the recipe validator then refused it. A reader of the schema could not see the rule.
  • A refused tedata_data call often said only Invalid input at request.
  • A layout saved before a column interpretation failed with "Save a column interpretation before composing a layout." and did not say how.
  • The README said that exports include every plot as PNG; an export of a chart block holds no PNG.
  • SECURITY.md cited the website terms for "as is"; those terms cover only Fleet and the website.
  • RELEASE-MANIFEST.json named the plugin directory's listing image.

What changed

  • The deduplicate step has two forms in the schema, as the validator always required: keep: "unique" (the default) takes no columns or orderBy; keep: "first" or "last" requires both. A step with columns and keep: "unique" is refused by the schema with the key named.
  • A refused tedata_data call names the field and its path, for example expected array, received undefined at request.recipe.steps[0].orderBy; an unknown action is answered with the list of actions. Valid calls are unchanged.
  • The layout error now ends "(tedata_data action configure, or tedata_prepare with a configuration)".
  • tedata_derive says that a restart of Claude Code requires a new preview. tedata_export says that a plot block is also exported as PNG.
  • README: a plot block is exported as SVG and PNG with its Vega-Lite spec and data; a chart block as SVG with its spec and data. The export itself is unchanged.
  • SECURITY.md cites this repository's LICENSE (MIT) for "as is".
  • tools/verify-release.mjs exempts the one PNG in the plugin manifest folder, which the directory reads and TE Data never does, and refuses a second one; RELEASE-MANIFEST.json lists 28 files.

Who should update

Anyone who asks Claude to deduplicate by key columns, or who builds layouts: the schema and the errors now say what to do. Everyone else gets no functional change; update to keep the release current.

How to install

claude plugin marketplace add ToolsEnabled/toolsenabled-data-claude-plugin
claude plugin install toolsenabled-data@toolsenabled-data

Open 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-data

Restart Claude Code. If you installed from a local copy, update that copy instead.

Download and verify

Download toolsenabled-data-0.8.7.tar.gz and toolsenabled-data-0.8.7.tar.gz.sha256 from this release. Archive SHA-256:

cb3587759cba23662f7bd09237b5182478417585c0861b6811fe7e7f12a16762
sha256sum -c toolsenabled-data-0.8.7.tar.gz.sha256
tar -xzf toolsenabled-data-0.8.7.tar.gz
cd toolsenabled-data
node tools/verify-release.mjs
node --test test/*.test.mjs

Release commit: 5b169e42308ac49bb3cb583bddaace393470a4e0. Tag: toolsenabled-data--v0.8.7.

How it was tested

  • The public payload suite passes 39 of 39 tests, with 0 failures and 0 skips, on the source and again from the extracted archive: the 33 tests of 0.8.6 and 6 new ones, each of which failed before its fix.
  • All 28 listed files verify on the source and on the extracted archive; a changed byte in the server, or a second image in the plugin manifest folder, is refused.
  • The README's Try it calls and the re-test's own calls were run against the server with DuckDB 1.5.6 before and after: a deduplicate with key columns and unique is refused with the key named, unique without columns still turns 30 rows into 28, the layout error names the configure action, an export of a chart block holds SVG, Vega-Lite and CSV, and an export of a plot block also holds a PNG.
  • claude plugin validate --strict passes on the directory, plugin.json, marketplace.json, skills and commands, on the source and on the extracted archive. In a scratch Claude Code configuration, claude plugin marketplace add of the extracted archive and claude plugin install toolsenabled-data@toolsenabled-data installed 0.8.7.
  • Two archive builds are byte-identical. The server offers 11 tools (12 where a host shows panels), each with a title annotation.

The internal 0.8.3 source suites are not distributed here and were not rerun for this patch. No browser, Windows or macOS suite was run. The panel and the Python workers are byte-identical to 0.8.3. Codex is not supported and was not run.

Support: support@toolsenabled.ai. Private vulnerability reporting: https://toolsenabled.ai/security/.

ToolsEnabled Data 0.8.6

Choose a tag to compare

ToolsEnabled Data 0.8.6

A small patch for 0.8.5: Codex no longer offers TE Data. TE Data is made for Claude Code; the server, panel, tools and privacy notice are unchanged.

What was wrong

Codex reads a repository's .agents/plugins/marketplace.json first and falls back to .claude-plugin/marketplace.json. This repository had only the Claude file, so codex plugin marketplace add ToolsEnabled/toolsenabled-data-claude-plugin offered TE Data in Codex, although it does not run there: Codex does not expand ${CLAUDE_PLUGIN_ROOT} in .mcp.json, so the server cannot start.

What changed

  • New .agents/plugins/marketplace.json, the file Codex reads first. It lists toolsenabled-data with "policy": {"installation": "NOT_AVAILABLE", "authentication": "ON_INSTALL"} and "category": "Productivity", so Codex shows the plugin as not installable from this marketplace. Claude Code keeps reading .claude-plugin/marketplace.json; installing and updating in Claude Code work as before.
  • README: "Codex is not supported."
  • RELEASE-MANIFEST.json lists the new file: 29 files.

Who should update

Nobody needs to: Claude Code users get no functional change. Update to keep the release current.

How to install

claude plugin marketplace add ToolsEnabled/toolsenabled-data-claude-plugin
claude plugin install toolsenabled-data@toolsenabled-data

Open 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-data

Restart Claude Code. If you installed from a local copy, update that copy instead.

Download and verify

Download toolsenabled-data-0.8.6.tar.gz and toolsenabled-data-0.8.6.tar.gz.sha256 from this release. Archive SHA-256:

2e5f3506c10185b00d5ef6994a98d75dfd886db501e9f016422a6d8257218eca
sha256sum -c toolsenabled-data-0.8.6.tar.gz.sha256
tar -xzf toolsenabled-data-0.8.6.tar.gz
cd toolsenabled-data
node tools/verify-release.mjs
node --test test/*.test.mjs

Release commit: d29b7cc5be2456c208ae6877cd0de3587eb4f12b. Tag: toolsenabled-data--v0.8.6.

How it was tested

  • The public payload suite passes 33 of 33 tests, with 0 failures and 0 skips, on the source and again from the extracted archive, the same tests as 0.8.5.
  • All 29 listed files verify on the source and on the extracted archive. Without its manifest entry, the verifier refuses the new file as unlisted.
  • Strict plugin validation passes on both (the tree, plugin.json, marketplace.json, skills and commands). In a scratch Claude Code configuration, claude plugin marketplace add of the extracted archive and claude plugin install toolsenabled-data@toolsenabled-data installed 0.8.6, so Claude Code still reads its own marketplace file.
  • Two archive builds are byte-identical.
  • Codex was not run. The marketplace file follows OpenAI's published marketplace format and was checked against the public openai/codex source: Codex reads .agents/plugins/marketplace.json before .claude-plugin/marketplace.json, and refuses to install an entry whose installation policy is NOT_AVAILABLE.

The internal 0.8.3 source suites are not distributed here and were not rerun for this patch. No browser, Windows or macOS suite was run. The panel and the Python workers are byte-identical to 0.8.3.

Support: support@toolsenabled.ai. Private vulnerability reporting: https://toolsenabled.ai/security/.

ToolsEnabled Data 0.8.5

Choose a tag to compare

ToolsEnabled Data 0.8.5

A compliance and privacy patch for 0.8.4. TE Data now refuses AI agents' chat history and settings as data, asks before its one-time setup downloads anything, gives every tool a title annotation, and handles two tool calls that reach a fresh server at once. The privacy notice says what TE Data keeps and how to delete it, and the README has a Try it section with sample data.

What was wrong

  • TE Data connected and read Claude Code chat history: tedata_sources accepted ~/.claude/projects/<project>/<session>.jsonl and ~/.claude/history.jsonl as documents, and evidence_read returned their text. Files in the Claude app's data folders, in the .gemini, .copilot and opencode folders, in the folders that CLAUDE_CONFIG_DIR or CODEX_HOME point to, and in other accounts' .claude-<name> and .codex-<name> folders were accepted too; only .codex was refused.
  • When two tool calls reached a fresh server at the same moment, the second failed with "Cannot read properties of null (reading 'request')".
  • No tool declared annotations.title. tedata_open, tedata_inspect and tedata_validate are marked read-only but write TE Data's profile cache, and did not say so. tedata_setup was marked non-destructive, although installing deletes TE Data's earlier Python environment.
  • The instructions told Claude to tell the user about setup and then run it, instead of asking first, and did not say that uv may download a Python interpreter. Claude could also run the setup command on its own.
  • The README and privacy notice said Cowork tasks run in Anthropic's cloud. The privacy notice did not say how long data is kept or how to delete it. When TE Data's tools were missing, the skill told Claude to stop and not to use other tools, and it forbade an artifact or dashboard when no panel was shown. The plugin's homepage was the site root, and there were no example prompts or sample data.

What changed

  • Claude Code's .claude folder (or the folder CLAUDE_CONFIG_DIR names), the Claude app's data folders (.config/Claude, Library/Application Support/Claude, AppData/Roaming/Claude, or LocalCache/Roaming/Claude for a packaged Windows install), the .codex folder (or CODEX_HOME), other accounts' .claude-<name> and .codex-<name> folders in the home folder, and the .gemini, .copilot and opencode folders are refused as data sources and documents, with a reason that names chat history. Files connected from them by an earlier version are no longer listed or read. Ordinary files connect as before, including .jsonl files elsewhere, projects in Claude Code worktrees (.claude/worktrees), plugin repositories' .claude-plugin folders and other tools' worktrees.
  • The server looks up its workspace once and shares that lookup between calls.
  • Every tool declares annotations.title. The three read-only tools that write TE Data's profile cache say so in their descriptions; the cache only speeds up later calls, so they stay read-only. tedata_setup is marked destructive, and its description says what installing deletes and that uv may download a Python interpreter.
  • Claude asks the user, and calls tedata_setup only after they agree. Only the user can run /toolsenabled-data:setup (disable-model-invocation: true).
  • README: "Made and tested for Claude Code; not tested in Cowork; its tools do not load in claude.ai chat." A Try it section with three prompts on examples/sample.csv and their expected results, a Settings table for the TEDATA_* environment variables, and the platform tested (Linux; native Windows and macOS have not been tested). PRIVACY.md: what TE Data keeps and where, that it stays until you delete it, what uninstalling leaves, how to remove everything (including what setup leaves in pip's and uv's folders), and the download hosts. The skill now tells the user and asks how to proceed instead of stopping or ruling out other tools. The plugin's homepage is https://toolsenabled.ai/data/.

Who should update

Everyone on 0.8.4 or earlier. The chat-history refusal is a privacy fix.

How to install

claude plugin marketplace add ToolsEnabled/toolsenabled-data-claude-plugin
claude plugin install toolsenabled-data@toolsenabled-data

Open 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-data

Restart Claude Code. If you installed from a local copy, update that copy instead.

Download and verify

Download toolsenabled-data-0.8.5.tar.gz and toolsenabled-data-0.8.5.tar.gz.sha256 from this release. Archive SHA-256:

71cb16a4bbbb4cf2bc3eafd4fbd4d1f592e6b817e9792fff3866055340f199f8
sha256sum -c toolsenabled-data-0.8.5.tar.gz.sha256
tar -xzf toolsenabled-data-0.8.5.tar.gz
cd toolsenabled-data
node tools/verify-release.mjs
node --test test/*.test.mjs

Release commit: a19846666cf02676239a66b133eaee611ed4ad7a. Tag: toolsenabled-data--v0.8.5.

How it was tested

  • The public payload suite: 0.8.4 passed 21 of 21 tests. 0.8.5 passes 33 of 33, with 0 failures and 0 skips, on the source and again from the extracted archive. Its 12 new behavioural tests start the real server with a scratch home and project; 9 of them fail on 0.8.4; the other 3 check that ordinary files still connect.
  • Live checks on the extracted archive. Agent history: of 13 synthetic agent history and settings files, 0.8.4 connected 12 and returned their text; 0.8.5 refuses all 13, and lists none of them from a workspace saved earlier. With CLAUDE_CONFIG_DIR and CODEX_HOME pointing at moved folders, 0.8.4 returned the text of a transcript, a memory file and a Codex session; 0.8.5 refuses all 3. Four ordinary files still connect and read back, and so do a plugin repository's .claude-plugin files, data in another tool's worktree and a project in a Claude Code worktree. Simultaneous first calls: with a client that offers no roots, 0.8.4 failed the second call on 5 of 5 fresh servers; 0.8.5 failed none of 40 calls on 20 fresh servers, with and without client roots.
  • Each server fix was reverted on its own (22 reverts). Every revert made its test fail, and restoring it passed.
  • The tool calls behind the three Try it prompts were run through the server with DuckDB 1.5.6 on examples/sample.csv (no Claude session was used): 2 of 30 rows have high_c below low_c, the copy without duplicates has 28 rows, and the chart has one line per city and exports report.html.
  • Two archive builds are byte-identical. All 28 listed files verify on the source and on the extracted archive, and strict plugin validation passes on both.

The internal 0.8.3 source suites are not distributed here and were not rerun for this patch. No browser, Windows or macOS suite was run. The panel and the Python workers are byte-identical to 0.8.3.

Support: support@toolsenabled.ai. Private vulnerability reporting: https://toolsenabled.ai/security/.

ToolsEnabled Data 0.8.4

Choose a tag to compare

ToolsEnabled Data 0.8.4

A documentation and watcher patch for 0.8.3. It adds a literal first-install path, usable watcher help and verification tools that are included in the public release. Connected-file reading, state handling and the panel retain the 0.8.3 behavior.

What was wrong

  • The README told new users to install the plugin without giving the marketplace and install commands.
  • The previous notes and manifest referred to internal source commit 4f61abcf3eeb9b7532e7bfe84a49a46ab6bf928a and release.mjs, neither of which is distributed in this public repository. The listed payload checksums were valid, but the advertised source-build verification was unavailable to users.
  • The watcher stayed running without feedback when asked for --help or given an unknown option.

What changed

  • The README gives first-install and update commands.
  • node server/tedata-watch.mjs --help prints usage and exits successfully. Unknown, repeated or missing-value arguments name the problem, show usage and exit with status 2. Continuous watching announces the workspace; --once scans once and exits, including when combined with --run for an active run.
  • node tools/verify-release.mjs verifies the public payload's listed file sizes and SHA-256 hashes and refuses unlisted files. RELEASE-MANIFEST.json identifies public payload commit 204092dc2d27bedbb4f452970e24b19ab1eb0b55, which is reachable from this release; it separately labels the internal 0.8.3 bundle source. The manifest itself is the checksum list and is not self-hashed.
  • The release includes behavioral tests, a deterministic archive tool, a dated changelog and the security policy.

Who should update

Users on 0.8.3 who want the documented install and verification path or use the watcher directly. Users on 0.8.0–0.8.2 should also update for the connected-file and saved-state fixes described in the README's “Notes for 0.8.3”.

How to install

claude plugin marketplace add ToolsEnabled/toolsenabled-data-claude-plugin
claude plugin install toolsenabled-data@toolsenabled-data

Open Claude Code in your project folder, run /toolsenabled-data:setup once per computer, connect your data, then run /tedata.

How to update

claude plugin marketplace update toolsenabled-data
claude plugin update toolsenabled-data@toolsenabled-data

Restart Claude Code. If you installed from a local copy, update that copy instead.

Download and verify

Download toolsenabled-data-0.8.4.tar.gz and toolsenabled-data-0.8.4.tar.gz.sha256 from this release. Archive SHA-256:

7cb7603422330e00ce74e41d2475c482cfa91aaed21261e1d1217cbd615f382b
sha256sum -c toolsenabled-data-0.8.4.tar.gz.sha256
tar -xzf toolsenabled-data-0.8.4.tar.gz
cd toolsenabled-data
node tools/verify-release.mjs
node --test test/*.test.mjs

Release commit: d6a6fe1deaa27093a548068c932be9ababb8eb4e. Tag: toolsenabled-data--v0.8.4.

How it was tested

  • The initial shipped-watcher/MCP behavior suite on 0.8.3: 9 tests, 4 pass, 5 fail (help and invalid arguments timed out).
  • The full public payload suite on 0.8.4 and again from the extracted archive: 21 tests, 21 pass, 0 failures, 0 skips. It checks watcher usage/refusals/startup and completed-run reporting, MCP initialization and all eleven tool registrations, and file-verifier behavior.
  • An independent reviewer reproduced an inherited active-run hang with --run ... --once. The added regression failed before the fix (20 pass, 1 fail) and passed after it (21 pass, 0 fail).
  • Seven file-verifier gate mutations each failed their behavior check; restoring each gate returned the suite to green.
  • Two archive builds are byte-identical. All 26 listed files verify on the source payload and extracted archive. Strict plugin validation passes on both.

The internal 0.8.3 source suites (159 JavaScript and 71 Python tests) are not distributed here and were not rerun for this patch. No browser, Windows or macOS suite was run. This patch's tests do not substitute for those suites. Source worker files and the panel are byte-identical to 0.8.3; the bundled MCP server changes only its reported version.

Support: support@toolsenabled.ai. Private vulnerability reporting: https://toolsenabled.ai/security/.

ToolsEnabled Data 0.8.3

Choose a tag to compare

ToolsEnabled Data 0.8.3

A reliability hotfix for 0.8.2. It corrects two defects in how TE Data read connected files and handled its own state folder. Nothing else changes: TE Data still runs only on your computer, reads only what you connect, and never modifies a source file.

What was wrong

  1. A connected file whose path contains *, ?, [ or ] could show another file's rows. The query engine treated such a path as a pattern, so data[1].csv was read as data1.csv whenever that file existed beside it. The profile, and any derived copy made from it, carried the connected file's name and fingerprint over rows from the other file. The reading code is the same in 0.8.0, 0.8.1 and 0.8.2; the defect was reproduced on 0.8.2.
  2. Saved state followed symbolic links. A symbolic link at .tedata, or at a folder below it, redirected what TE Data writes there (interpretations, caches, derived copies, exports, preparation and collection records) to wherever the link pointed, outside the workspace. The profile-cache cleanup also removed every .json file in .tedata/cache/profiles that was not a current cache record, which through such a link could include a file that was not TE Data's.

What changed

  • A path with *, ?, [ or ] is read literally. The worker opens it through a pattern-free alias in a private temporary folder and checks that the alias resolves to the very same file; where no alias can be made, the file is refused with a message naming the characters, and nothing is read. The rows and the fingerprint always describe the same file.
  • Saved state is read and written only through real folders. A symbolic link at .tedata, or at a folder or record below it (data-state, cache, preparations, collections, derived-data and its exports), is refused with a message naming the link. Replace the link with a folder; to keep derived copies and exports on another disk, set derivedDirectory in .tedata/workspace.json to a real folder.
  • Profile-cache cleanup removes only the cache records TE Data wrote, never another file in that folder.
  • A collection member's saved output record is checked for the expected shape before TE Data cleans up or restores from it.

Who should update

Everyone on 0.8.0, 0.8.1 or 0.8.2.

  • If you connected a file or folder whose name has *, ?, [ or ]: inspect it once more after updating, so that its saved interpretation is checked against its own columns, and derive again any copy made from it before 0.8.3 (its lineage names the source file).
  • If .tedata or a folder under it is a symbolic link: replace it with a real folder, or set derivedDirectory for derived copies and exports. Derived copies already behind a link stay listed; new copies and exports are refused until the link is replaced, and a linked cache folder is refused at the first profile of a dataset.

How to update

From a terminal:

claude plugin marketplace update toolsenabled-data
claude plugin update toolsenabled-data@toolsenabled-data

or use the /plugin menu inside Claude Code. Then restart Claude Code. If you installed TE Data from a local folder or a development marketplace, update that copy instead. The README's "Notes for 0.8.3" section repeats the two notes above.

How it was tested

  • Regression tests for both defects, written to fail on 0.8.2 and pass on 0.8.3. The worker tests read a bracketed file beside a same-named decoy and check that the rows and the SHA-256 fingerprint are the file's own, for *, ?, [ ], .tsv, .csv.gz, a bracketed folder and a bracketed ZIP archive. The state-tree tests plant a symbolic link at every state folder and record (.tedata, data-state, cache, preparations, collections, derived-data, exports, a single record) and check that nothing is written or read through it, that the message names the link, and that cache cleanup leaves other files alone.
  • The full suites on the release source (commit 4f61abc): JavaScript 159 tests, 151 pass, 0 fail, 8 skipped (browser tests); Python 71 tests, OK.
  • End to end over MCP stdio on the finished plugin: data[1].csv beside data1.csv, z[1].csv.gz, q?.csv, star*.csv, archive[1].zip and a proj [2024] folder each return their own rows with unchanged fixture hashes; a linked .tedata, derived-data, cache and exports are refused by name and their link targets stay empty; cache cleanup removes only an old cache record and keeps the other files.
  • node release.mjs verify on the published tree: every file matches a fresh build of source commit 4f61abc (RELEASE-MANIFEST.json lists each file's SHA-256), and claude plugin validate --strict passes.

Windows and macOS were not tested for this release; the symbolic-link behaviour there follows the same code path but was exercised only on Linux.