SIGN IN SIGN UP

feat(server): add read-only tool surface at /http/api-key-readonly/mcp (E13.4)

get_readonly_header_mcp() registers all tools and strips everything outside
the read-only prefixes (list_/retrieve_/get_/count_/search_/read_) — 59 of
140 tools remain. resolve_* is deliberately excluded because
resolve_work_item_type creates the type when missing. Mounted alongside the
full header endpoint in both HTTP branches; lifespans combined via
AsyncExitStack. This is the surface for external agents (Tailscale Funnel /
Perplexity): a chat connector cannot mutate Plane data even with a valid PAT.

Tests assert no mutating prefix leaks and that the surface equals exactly the
read-prefix subset of the full endpoint; 87 unit tests pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
B
bl4nk44 committed
697c40c3c4b7e6cbdaccbd6528b480ea3d2fcba6
Parent: 9c91221