One class for every caller
Mark an Action class #[Expose] and it answers a web route with Precognition and a typed TypeScript function, and becomes an agent tool (with laravel/ai) and an MCP tool where its effect allows. The same class also runs from Artisan and the queue.
What one class gets