← Documentation indexdocs/superpowers/plans/2026-10-11-v3-issue-233.md

V3 Issue #233 — Structured Tool Arguments and MCP Implementation Plan

Issue-specific plan for #233, stacked on the #261 security-boundary PR.

Goal: Make JSON objects the native tool-call contract from provider/MCP entry through authorization, registry validation, executor dispatch, receipts, and observers, while keeping text APIs explicitly compatibility-only.

Architecture: Extend the existing ToolRegistry and AgentRuntime.execute_call() boundary. Built-in executors live in openkyrozen/tools; MCP and other surfaces adapt only at their public compatibility edges. Security policy remains in runtime/security. No parallel catalog or second dispatcher.

Tech stack: Python 3.12–3.13, standard library and current dependencies, unittest.

Spec: V3 issue #233 (R014–R018), with related issue #226.

Constraints and compatibility

Caller and contract map

Task 1 — Prove object execution and shared invocation

Task 2 — Enforce canonical JSON-object schemas

Task 3 — Migrate built-ins with their compatibility edges

Task 4 — Route runtime and MCP through the typed boundary

Task 5 — Verify and deliver #233

Acceptance and known limits

PASS means native provider/MCP object arguments reach their typed executor unchanged and schema violations are rejected before side effects. Compatibility text adapters may translate legacy calls. The malformed search argument is independently covered; provider continuation/model repair and unimplemented platform sandboxing are outside this issue. Live providers are not called.