import type { McpServer } from '@modelcontextprotocol/server'; import { type ToolDefinition, type ToolContext, type ToolSideEffect } from './types.js'; import { type ToolProfile } from '../config/profiles.js'; import { z } from 'zod'; import { type RemoteRiskLevel } from '../remote/protocol.js'; export declare const ErrorCodes: { readonly CONFIRM_WRITE_REQUIRED: "ERR_CONFIRM_WRITE_REQUIRED"; readonly BRIDGE_DISCONNECTED: "ERR_BRIDGE_DISCONNECTED"; readonly TOOL_EXECUTION: "ERR_TOOL_EXECUTION"; readonly TOOL_NOT_FOUND: "ERR_TOOL_NOT_FOUND"; readonly INVALID_INPUT: "ERR_INVALID_INPUT"; readonly TOOL_OUTPUT_INVALID: "ERR_TOOL_OUTPUT_INVALID"; readonly FORBIDDEN_SCOPE: "ERR_FORBIDDEN_SCOPE"; readonly REMOTE_RELAY: "ERR_REMOTE_RELAY"; }; export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes]; export interface StructuredError { errorCode: ErrorCode; message: string; /** Optional structured details for the client */ details?: Record; } export declare function getRequiredToolScopes(tool: ToolDefinition): string[]; export declare function sideEffectForTool(tool: ToolDefinition): ToolSideEffect; /** Resolve a tool's Remote Relay risk tier using explicit side-effect policy precedence. */ export declare function remoteRiskForTool(tool: ToolDefinition): RemoteRiskLevel; export interface ToolMetadata { name: string; title: string; description: string; profile: ToolProfile; risk: 'low' | 'medium' | 'high'; confirmWrite: boolean; group: string; version: string; evidence: ToolDefinition['evidence']; annotations: ToolDefinition['annotations']; } export declare class ToolRegistry { private tools; private currentProfile; setProfile(profile: ToolProfile): void; register(definition: ToolDefinition): void; get(name: string): ToolDefinition | undefined; getEnabledTools(): ToolDefinition[]; getAllTools(): ToolDefinition[]; /** Register all enabled tools onto an MCP server. * Each handler is wrapped with: * - confirmWrite gate (rejects calls that omit the required acknowledgment) * - structured error codes * - bridge‑disconnected friendly error interception */ registerAllOnServer(server: McpServer, context: ToolContext): void; /** Return rich metadata for every enabled tool. */ getToolDefinitions(): ToolMetadata[]; /** Return a summary snapshot for diagnostics / health‑check endpoints. */ getSummary(): { total: number; enabled: number; profile: ToolProfile; serverVersion: string; }; }