## What's Changed
Added a persistent workspace-cli tool for listing and invoking MCP tools with encrypted, disk-backed OAuth token caching. Super useful for machine to machine, OpenClaw, enterprise settings with a central instance etc.
* enh: FastMCP-native CLI Mode with Cloud
## What's New
### `get_changed_symbols` tool
Map a git diff to the symbols that actually changed. After merging a PR, this answers _"what functions/classes were added, removed, modified, or renamed?"_ — exactly what code review and regression triage needs.
**Parameters:**
| Na
## What's new
### Added
- **`find_dead_code` tool** — finds files and symbols unreachable from any entry point using the import graph.
- Entry points auto-detected: `main.py`, `__main__.py`, `conftest.py`, `manage.py`, `__init__.py` roots, and `if __name__ == '__main__'` guard
## Fix
Replaced `watchfiles.awatch()` in `_manifest_watcher` with a simple 0.5s polling loop.
`watchfiles` was unreliable on Windows (especially in temp directories used by tests and Claude Code agent hooks), causing the manifest watcher to silently miss `create`/`remove` event
## What's New
### PageRank / Centrality Ranking
**New tool: `get_symbol_importance`** — returns the most architecturally important symbols in a repo, ranked by PageRank or in-degree on the import graph.
```json
{
"ranked_symbols": [
{"symbol_id": "src/core/engine.py::Eng
<!-- Release-Triggered-By: jerm-dro -->
## What's Changed
* Update diagrams and links in README by @danbarr in https://github.com/stacklok/toolhive/pull/4397
* Add edited trigger to PR size labeler workflow by @danbarr in https://github.com/stacklok/toolhive/pull/4398
* Fix macO
PR #2861 backported `dereference_refs()` to v2 but never wired it into the tool schema pipeline — `$ref` and `$defs` were still sent to MCP clients. Now fixed: `compress_schema()` dereferences at both tool schema creation sites, so schemas are fully inlined before reaching client
## What's Changed
* Fix normalizeCommand() splitting absolute paths containing spaces (backporting PR #553 for v1.x) by @debiprasad in https://github.com/laravel/boost/pull/726
## New Contributors
* @debiprasad made their first contribution in https://github.com/laravel/boost/pu
Release v1.15.1 contains somewhat hacky workaround fixes for Claude Cowork / Claude Desktop due to a bizarre issue they have passing invalid json to list and dict payload required tools. It will be removed once they come back into compliance with the MCP client spec.
## What's
## What's new
**Feature 4 from upgrades PRD: Blast radius depth scoring**
`get_blast_radius` now surfaces how risky a change is, not just which files it touches.
### New response fields (always present)
- `direct_dependents_count` — files at depth 1 (direct importers of the ch
Fix Windows CI: trusted_folders tests failing due to backslash-escaped paths in JSON
`_platform_path_str` was using `str(Path(...))` which on Windows produces `C:\work` with backslashes. When embedded raw into an f-string JSON literal, this creates invalid \escape sequences, cau
## What's new
### Trusted folder allowlist for `index_folder()` (PR #175 by @tmeckel)
Adds a `trusted_folders` config key that restricts which paths `index_folder()` is allowed to index — without a global disable flag.
**Whitelist mode (default):** only listed roots and their
## What's new
**New tool: `check_freshness`** — compare the git HEAD SHA stored at index time against the current HEAD for locally indexed repos.
- Returns `fresh` (bool), `indexed_sha`, `current_sha`, `commits_behind`
- GitHub-indexed repos return `is_local=False` with a clear
## What's new
**UX: structured file-cap warnings** — `index_folder` and `index_repo` now surface `files_discovered`, `files_indexed`, and `files_skipped_cap` fields plus a human-readable warning when the file cap is hit (previously a silent "note").
**search_symbols + get_symbo