Basic Usage
Signature
The decorator is generic over the input shapeI and (optionally) the output
schema O. It returns a class decorator that rewraps the decorated class,
inferring the ToolContext input/output type parameters from the options — so
you write a plain class … extends ToolContext with no explicit generics. The
signature below is illustrative:
Type Safety
The@Tool decorator provides compile-time type checking:
- Input validation: The
execute()parameter type must exactly match theinputSchema. Mismatches produce a descriptive error at compile time. - Output validation: When
outputSchemais provided, theexecute()return type must be assignable to the inferred output type. - Context check: The decorated class must extend
ToolContext. Using@Toolon a plain class produces a compile error. - Invalid options: Typos in decorator options (e.g.,
concurrency: { maxConcurrensst: 5 }) are caught at compile time with specific error messages, without losing autocomplete on other fields.
Configuration Options
Required Properties
Optional Properties
Output Types
Authorization
authProviders entries default to required: true. A required: true provider
gates the call before execute() when its credential isn’t connected for the
session (-32001 / data.authUrl); set required: false for optional providers,
which never gate. The gate is a no-op for tools with no authProviders and for
unauthenticated / public requests.
Annotations
Examples
UI Configuration
Theui.template field accepts a builder function, an HTML/MDX string, a React component, or a FileSource (for client-side transpilation):
ToolUIConfig shape (CSP, sanitization, helpers, etc.).
Function-Based Alternative
For simpler tools, use thetool() function:
Context Methods
TheToolContext base class provides:
Dependency Injection
Notifications
Elicitation (Interactive Input)
Platform Detection
Authentication
HTTP Requests
Error Handling
Type Inference
FrontMCP provides helper types for extracting input/output types:Full Example
Related
ToolContext
Context class details
ToolRegistry
Tool registry API
Tool Errors
Tool-related errors
@Resource
Define resources