/**
 * MCPToolProvider — Custom Promptfoo provider for MCP tool-use evaluation.
 *
 * Orchestrates the MCP evaluation flow:
 * 1. Connects to the MCP server and discovers available tools
 * 2. Selects the appropriate LLM backend based on model ID prefix
 * 3. Delegates the multi-turn tool loop to the backend
 * 4. Formats the result for Promptfoo (including tool call summary)
 *
 * Promptfoo config usage:
 *
 *   providers:
 *     - id: file://dist/pipeline/compiler/mode-handlers/mcp-tool-provider/index.js
 *       label: "Claude Opus 4.6 + MCP"
 *       config:
 *         model: anthropic:messages:claude-opus-4-6
 *         maxToolRounds: 5
 *         temperature: 0.2
 *         max_tokens: 4096
 *         mcpServer:
 *           url: https://mcp.sanity.io
 *           auth: { type: bearer, token: "{{env.SANITY_API_TOKEN}}" }
 *           name: mcp-live-query-documents
 *         mcpTools: [query_documents, get_schema]
 */
import type { CallApiContextParams, ProviderOptions, ProviderResponse } from "./types.js";
export default class MCPToolProvider {
    config: Record<string, unknown>;
    constructor(options?: ProviderOptions);
    /**
     * Reported provider id. Promptfoo serializes this into `result.provider.id`,
     * which the report pipeline (`emit-eval-results.ts`) uses verbatim as the
     * trace `modelId` and the per-entry artifact key. Returning the loader path
     * (`file://…index.js`, the constructor's `options.id`) made every model in a
     * run share one id, collapsing multi-model trace keys onto a single entry
     * (W-mcp-trace-model-identity). Return the evaluated model id instead —
     * mirroring the literacy `agentic-provider`, whose `id()` is likewise a
     * model-derived identity rather than the `file://` module path.
     */
    id(): string;
    callApi(prompt: string, _context?: CallApiContextParams): Promise<ProviderResponse>;
}
