<?php

declare(strict_types=1);

namespace [namespace];

use NeuronAI\Tools\PropertyType;
use NeuronAI\Tools\Tool;
use NeuronAI\Tools\ToolProperty;

class [classname] extends Tool
{
    public function __construct()
    {
        // Define Tool name and description
        parent::__construct(
            '[classname]',
            'Describe the purpose of the tool',
        );
    }

    /**
     * Properties are the input arguments of the __invoke method.
     */
    protected function properties(): array
    {
        return [
            new ToolProperty(
                name: 'input',
                type: PropertyType::STRING,
                description: 'The input argument of the tool',
                required: true,
            ),
        ];
    }

    /**
     * Implementing the tool logic
     */
    public function __invoke(string $input): string
    {
        // ...

        return $input;
    }
}
