# План: gate-классификация research-tooling MCP (Perplexity Pack) **Дата:** 2026-06-14 ## Цель Завести три семейства MCP-инструментов research-слоя (`mcp__perplexity__*`, `mcp__exa__*`, `mcp__firecrawl__*`) в карту классификации gate-config `tools/mcp-tool-classifier.mjs` категорией `read_only`. Сейчас неклассифицированные MCP-инструменты получают default-block в гейте `enforce-mcp-classification`, поэтому вызовы пака (включая приёмочный live-smoke) блокируются. Постура `read_only` зафиксирована решением владельца 2026-06-14 и закрепляется в ADR-019: веб-разведка читает внешние источники и не мутирует state проекта; egress-скан исходящих аргументов (секреты / base64 / file:// / IP-литерал) остаётся активным на каждый вызов. Изменение по TDD: сначала красный тест на классификацию трёх семейств в `tools/mcp-tool-classifier.test.mjs`, затем минимальная аддитивная правка карты `DEFAULT_MCP_CLASSIFICATION`, затем зелёный прогон и полная регрессия инструментов. ```skills-json ["test-driven-development"] ``` ```steps-json [ {"op":"Edit","object":"tools/mcp-tool-classifier.test.mjs","ref":"D6"}, {"op":"Bash","object":"npx vitest run --root app --config vitest.config.tools.mjs","ref":"D6"}, {"op":"Edit","object":"tools/mcp-tool-classifier.mjs","ref":"D6"}, {"op":"Bash","object":"npx vitest run --root app --config vitest.config.tools.mjs","ref":"D6"}, {"op":"Bash","object":"npx vitest run --root app --config vitest.config.tools.mjs","ref":"D8"} ] ``` ```verified-context-json [ {"id":"vc1","kind":"EXTRACTED","ref":"tools/mcp-tool-classifier.mjs","anchor":"export const DEFAULT_MCP_CLASSIFICATION = Object.freeze({"}, {"id":"vc2","kind":"EXTRACTED","ref":"tools/cost-pricing.mjs","anchor":"export const PRICING = Object.freeze("} ] ```