Skip to main content

Overview

Tools are the primary way to extend your Magma agent’s capabilities. They allow your agent to interact with external systems, process data, and perform specific tasks. Tools are asynchronous methods that return a string or object response.

Basic Implementation

Here’s a simple example of implementing a tool:
myAgent.ts

Tool Decorators

@tool Decorator

The @tool decorator defines the tool itself and accepts the following options:
  • name: The name of the tool.
  • description: A description of the tool.
  • cache: Try to cache the tool if supported by the provider.
  • enabled: Dynamically enable or disable the tool based on agent state. Disabled tools are not supplied to the provider. If omitted, the tool will always be enabled.

@toolparam Decorator

The @toolparam decorator defines parameters for your tool:
  • key: The name of the parameter.
  • type: The type of the parameter.
  • description: A description of the parameter.
  • required: Whether the parameter is required to run the tool. Defaults to false.
Primitive-specific options:
  • enum: Possible values for the parameter.
Object-specific options:
  • properties: An array of MagmaToolParam objects which define the properties of the object.
Array-specific options:
  • items: A MagmaToolParam object which defines the type of the items in the array.
You should get intellisense for what properties are available for a given parameter type.

Advanced Tool Parameters

Tools can accept complex parameter types:

Best Practices

  1. Return Values
    • Tools can return a string or object
    • Tools should return meaningful success/error messages
    • Tool return values should be concise and informative
  2. Error Handling
    • While you can use a normal return string for failed tools, it is best practice to throw an error. The error message will be passed to the agent and it will attempt to fix the issue.
  3. Type Safety
    • Use proper TypeScript types
    • Avoid using any type
    • Validate input parameters

Common Use Cases

API Integration

File Operations

Remember that tool responses are used as context for the agent’s next action. Keep responses clear and structured to help the agent make better decisions.

For more examples and advanced usage, check out some of our Templates

Slack DM Agent

A simple template for a Slack DM agent

Supabase DB Agent

A simple template for a Supabase DB agent