import type { TSchema } from "typebox"; /** The MCP tool annotation hints Pi forwards to permission extensions. */ export interface ToolHints { readOnlyHint?: boolean; destructiveHint?: boolean; idempotentHint?: boolean; openWorldHint?: boolean; } /** Keep only boolean hints; everything else a server sends is untrusted noise. */ export declare function toolHints(value: unknown): ToolHints | undefined; export interface CatalogTool { server: string; name: string; nativeName: string; description: string; inputSchema: TSchema; annotations?: ToolHints; identity: string; schemaHash: string; } export declare function plain(value: string): string; export declare function line(value: string): string; export declare function nativeName(server: string, name: string): string; export declare function prepareTool(server: string, identity: string, tool: { name: string; description?: string; inputSchema: unknown; annotations?: unknown; }): CatalogTool; /** Discovery exposes names, never a callable signature. */ export declare function summarize(tool: CatalogTool, includeIdentifier?: boolean): string; /** Suggestions are informational only; resolution is case-sensitive and exact. */ export declare function resolveTools(tools: CatalogTool[], identifiers: string[]): { identifier: string; tool: CatalogTool | undefined; suggestions: string[]; }[]; export declare const DEFAULT_SEARCH_LIMIT = 5; export declare const MAX_SEARCH_LIMIT = 50; export declare function tokens(text: string): string[]; /** Exact selectors win; ordinary retrieval weights names over descriptions. */ export declare function searchTools(tools: CatalogTool[], query: string, server?: string, limit?: number): CatalogTool[];