"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from acuvity.types import BaseModel
import pydantic
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class McptoolannotationsTypedDict(TypedDict):
    r"""Represents the tool annotations as they can be optionally defined for MCP tools."""

    destructive_hint: NotRequired[bool]
    r"""If true, the tool may perform destructive updates."""
    idempotent_hint: NotRequired[bool]
    r"""If true, repeated calls with same args have no additional effect."""
    open_world_hint: NotRequired[bool]
    r"""If true, tool interacts with external entities."""
    read_only_hint: NotRequired[bool]
    r"""If true, the tool does not modify its environment."""
    title: NotRequired[str]
    r"""Human-readable title for the tool."""


class Mcptoolannotations(BaseModel):
    r"""Represents the tool annotations as they can be optionally defined for MCP tools."""

    destructive_hint: Annotated[
        Optional[bool], pydantic.Field(alias="destructiveHint")
    ] = None
    r"""If true, the tool may perform destructive updates."""

    idempotent_hint: Annotated[
        Optional[bool], pydantic.Field(alias="idempotentHint")
    ] = None
    r"""If true, repeated calls with same args have no additional effect."""

    open_world_hint: Annotated[
        Optional[bool], pydantic.Field(alias="openWorldHint")
    ] = None
    r"""If true, tool interacts with external entities."""

    read_only_hint: Annotated[Optional[bool], pydantic.Field(alias="readOnlyHint")] = (
        None
    )
    r"""If true, the tool does not modify its environment."""

    title: Optional[str] = None
    r"""Human-readable title for the tool."""
