What problem does it solve? Building LLM integrations with tool calling requires careful handling of parameter validation, typed errors, and handler dependencies. This Skill provides guidance for defining tools with Effect AI's Tool and Toolkit APIs so agents get schema-validated parameters, typed success/failure results, and composable toolkits without ad-hoc glue code. ## Core Features & Use Cases - User-Defined Tools: Create tools with Tool.make using Schema.Struct parameters, typed success/failure schemas, failureMode control, and declared service dependencies. - Toolkit Composition: Combine tools with Toolkit.make, implement handlers via toLayer or toHandlers, and execute calls through toolkit.handle with streaming preliminary and final results. - Provider-Defined and Dynamic Tools: Integrate provider-native capabilities like OpenAI WebSearch and FileSearch via Tool.providerDefined and OpenAiTool, or runtime-discovered tools via Tool.dynamic. - Use Case: When building a coding agent that needs file-read and search capabilities, define each tool with validated parameters, compose them into a toolkit, provide handler layers with service dependencies, and let the LLM invoke them with typed results. ## Quick Start Ask the agent to define an Effect AI tool with Tool.make that has validated parameters and a typed handler, then compose it into a toolkit with Toolkit.make.