Public/Get-McpTool.ps1

function Get-McpTool {
    <#
    .SYNOPSIS
        Returns the tools exposed by an MCP server (cached per session).
    .PARAMETER Server
        Session name.
    .PARAMETER Name
        Tool name(s); wildcards supported.
    .PARAMETER Force
        Re-fetch tools/list even if the cache is fresh.
    .EXAMPLE
        Get-McpTool -Server everything
    .EXAMPLE
        Get-McpTool -Server everything -Name 'get*'
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory, Position = 0)]
        [string]$Server,

        [Parameter(Position = 1)]
        [string[]]$Name,

        [switch]$Force
    )

    $session = Get-McpSession -Server $Server
    if ($Force -or $session.ToolsStale -or $null -eq $session.Tools) {
        Update-McpToolCache -Session $session
    }

    $tools = @(Select-McpTool -Session $session -Name $Name)

    foreach ($pattern in $Name) {
        if (-not [System.Management.Automation.WildcardPattern]::ContainsWildcardCharacters($pattern) -and -not ($tools | Where-Object Name -eq $pattern)) {
            Write-Error -ErrorRecord (New-McpError -ErrorId 'McpToolNotFound' -Category ObjectNotFound -TargetObject $pattern `
                    -Message "Tool '$pattern' not found on server '$Server'.")
        }
    }

    $tools
}