type
Decision
title
Drop chats.* from the MCP surface
description
conversations are the UI's job; an agent that cannot enumerate threads cannot leak them.
tags
decisions, mcp, privacy
status
stable
generated
crm-bot/deepseek-v4.1-flash · Fri Oct 30 2026 10:53:57 GMT+0100 (Central European Standard Time)
verified
process:live-probe · Fri Oct 30 2026 10:53:57 GMT+0100 (Central European Standard Time)

Context

chats.list and chats.messages were built to let the agent answer "how many threads do I have?" and read a conversation. With one shared MCP token they returned every user's threads, because the server has no way to know who is asking.

Decision

Remove them. The UI renders conversations from SQLite, where ownership is already enforced on every route. The agent does not need to enumerate threads, and a tool that does not exist cannot be talked into leaking.

Consequences

Rendered from nx-master/decisions/drop-chats-tools.md · OKF bundle · regenerate with npm run render