/*
 * Orvanta API
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.6
 * Contact: contact@orvanta.cloud
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// AgentTool : A tool available to an AI agent. Can be a flow module or an external MCP (Model Context Protocol) tool
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AgentTool {
    /// Unique identifier for this tool. Cannot contain spaces - use underscores instead (e.g., 'get_user_data' not 'get user data')
    #[serde(rename = "id")]
    pub id: String,
    /// Short description of what this tool does (shown to the AI)
    #[serde(rename = "summary", skip_serializing_if = "Option::is_none")]
    pub summary: Option<String>,
    #[serde(rename = "value")]
    pub value: Box<models::ToolValue>,
}

impl AgentTool {
    /// A tool available to an AI agent. Can be a flow module or an external MCP (Model Context Protocol) tool
    pub fn new(id: String, value: models::ToolValue) -> AgentTool {
        AgentTool {
            id,
            summary: None,
            value: Box::new(value),
        }
    }
}

