Repository navigation
v2.20.0
Tool surface unification
The tool registry (ctk.builtin + ctk.network) is now the single source of truth for every tool surface. Previously the same tools were defined two or three times (the chat path, the MCP server, and a REST veneer) with schemas that had drifted apart; this release collapses them.
What changed
- The MCP server now projects from the registry. Its tool list and dispatch are generated from the registry via a small
projectionlayer; the five hand-written MCP handler modules are gone. The MCP server exposes the same curated set as before, now derived rather than duplicated. execute_sqlandsemantic_searchbecame registry tools. They were MCP-only; folding them into the registry means the TUI chat path can reach them too, and they are defined once.find_similarwas reconciled intofind_similar_conversations, which gains an on-the-fly cosine fallback so it returns results even before the similarity links table is built.update_conversationis now the canonical mutation tool (set starred / pinned / archived / title in one call). The seven verb tools (star, unstar, pin, unpin, archive, unarchive, rename) are now thin wrappers over it, with their exact outputs unchanged._format_messageround-trips assistanttool_calls, so strict OpenAI-spec servers accept the multi-turn tool history (lenient and local endpoints were already fine).
Deprecations and breaking changes
- The REST and web (Flask) interfaces were removed entirely. They had no live consumer (the only entry point was an example script; the HTML exporter is self-contained and never used them). The optional Flask dependency is dropped. If you depended on the example REST server, it is gone.
- MCP
get_conversationdefault changed: an MCP client that OMITTEDinclude_contentpreviously got full message content; it now gets the summary (the canonical default is content-off). Send the (now-aliased)include_contentparameter explicitly to opt back in. - MCP
find_similaris deprecated in favor offind_similar_conversations. Both names are exposed for this release;find_similarand its legacy params (id,top_k,threshold) are mapped to the canonical tool. Itsmin_similaritydefault changed from 0.0 to 0.1.
The old MCP parameter names (id, include_content, top_k, threshold) are accepted for one release via an alias shim, then will be removed.
2135 unit tests pass, mypy clean. This completes the tool-surface work begun in 2.19.1.
pip install -U conversation-tk