MCP tool development
A public tool needs more than a handler. Define its input and output contract, register it in the facade, and declare its advertisement and presentation in the tool projection registry. The registry records whether the tool is public or internal, where it is advertised, how humans see its result, whether the widget may call it, which skills own it, and its lifecycle.
Keep orchestration behind composite operations when a sequence would otherwise flood the model's tool list. Internal members can remain callable by the server while being withheld from tools/list; their registry entry must explain which public composite owns the behavior.
Tests should prove schema validation, dispatch, error shape, projection, and a real package-level round trip. Rebuild the plugin bundle only after source tests pass, then run the parity and checksum gates.