import { S as SkillEntry, M as MCPClientManager } from './index-fZyfLCHE.js'; import { R as RpcLogger, a as RetryPolicy, M as MCPServerConfig, b as MCPPrompt, c as MCPResourceTemplate, d as MCPResource, L as ListToolsResult } from './types-CI0Xyszt.js'; import { CacheMode } from '@modelcontextprotocol/client'; import 'ai'; import './public-types-CX8stXC3.js'; import './types-HXAijHji.js'; import 'zod'; import '@modelcontextprotocol/client/stdio'; /** * Pure MCP operations and lifecycle helpers. * * Each operation is a thin wrapper around MCPClientManager methods that * normalizes inputs/outputs (default empty arrays, stringify prompt arguments, * etc.) without introducing any framework-specific dependencies. */ /** * Per-call cache disposition threaded to the underlying cacheable verbs * (SEP-2549). Absent ⇒ upstream default `"use"`. Raw-evidence callers * (snapshot/doctor/conformance) pass `"bypass"` so their reads never resolve * from a cached body. See {@link CacheMode}. */ type WithCacheMode = { cacheMode?: CacheMode; }; interface ListResourcesParams extends WithCacheMode { serverId: string; cursor?: string; } interface ReadResourceParams extends WithCacheMode { serverId: string; uri: string; } interface ListPromptsParams extends WithCacheMode { serverId: string; cursor?: string; } interface ListPromptsMultiParams { serverIds: string[]; } interface GetPromptParams { serverId: string; name: string; arguments?: Record; } interface ListToolsParams extends WithCacheMode { serverId: string; cursor?: string; } interface ListAllToolsParams extends WithCacheMode { serverId: string; } interface ListAllToolsResult { tools: ListToolsResult["tools"]; toolsMetadata: Record; } interface ListAllResourcesParams extends WithCacheMode { serverId: string; } interface ListAllResourcesResult { resources: MCPResource[]; } interface ListAllPromptsParams extends WithCacheMode { serverId: string; } interface ListAllPromptsResult { prompts: MCPPrompt[]; } interface ListAllResourceTemplatesParams extends WithCacheMode { serverId: string; } interface ListAllResourceTemplatesResult { resourceTemplates: MCPResourceTemplate[]; unsupported?: boolean; } interface ListAllServerSkillsParams extends WithCacheMode { serverId: string; } interface ListAllServerSkillsResult { skills: SkillEntry[]; /** * SEP-2549 caching attributes from the LAST page, when the server sent them. * Preserved rather than dropped: a drained listing is still a cacheable * artifact, and the capture coordinator uses the TTL to decide how long a * capture stays fresh. */ ttlMs?: number; cacheScope?: string; /** * Skill URIs the server listed MORE THAN ONCE across the drained pages. * * A self-contradictory listing is a server bug the debugger surfaces, not * one it resolves. Both copies stay in `skills` so a caller can show what * was actually sent; the capture path rejects BOTH (never last-wins) and * names the URI from here. */ duplicateUris: string[]; } interface WithEphemeralClientOptions { /** Override the serverId (default: "__ephemeral__") */ serverId?: string; /** Client name reported to the MCP server (default: "mcpjam-sdk") */ clientName?: string; /** Request timeout in ms (default: 30_000) */ timeout?: number; /** Optional RPC logger for request/response tracing. */ rpcLogger?: RpcLogger; /** Retry policy for the ephemeral manager and initial connect. */ retryPolicy?: RetryPolicy; /** * Runs against the freshly-constructed manager BEFORE the initial * `connectToServer`. Use it to register per-server state that must be present * on the connect envelope — e.g. an MRTR input collector via * `setMrtrInputCollector`, which only advertises `elicitation` when registered * pre-connect (a 2026-07-28 server checks declared client capabilities before * embedding an elicitation). */ beforeConnect?: (manager: MCPClientManager, serverId: string) => void | Promise; } declare function listResources(manager: MCPClientManager, params: ListResourcesParams): Promise<{ resources: { uri: string; name: string; description?: string | undefined; mimeType?: string | undefined; size?: number | undefined; annotations?: { audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; icons?: { src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; title?: string | undefined; }[]; nextCursor: string | undefined; }>; declare function readResource(manager: MCPClientManager, params: ReadResourceParams): Promise<{ content: { [x: string]: unknown; contents: ({ uri: string; text: string; mimeType?: string | undefined; _meta?: { [x: string]: unknown; } | undefined; } | { uri: string; blob: string; mimeType?: string | undefined; _meta?: { [x: string]: unknown; } | undefined; })[]; _meta?: { [x: string]: unknown; "io.modelcontextprotocol/serverInfo"?: { version: string; name: string; websiteUrl?: string | undefined; description?: string | undefined; icons?: { src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; title?: string | undefined; } | undefined; } | undefined; }; }>; declare function listPrompts(manager: MCPClientManager, params: ListPromptsParams): Promise<{ prompts: { name: string; description?: string | undefined; arguments?: { name: string; description?: string | undefined; required?: boolean | undefined; }[] | undefined; _meta?: { [x: string]: unknown; } | undefined; icons?: { src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; title?: string | undefined; }[]; nextCursor: string | undefined; }>; declare function listPromptsMulti(manager: MCPClientManager, params: ListPromptsMultiParams): Promise>; declare function getPrompt(manager: MCPClientManager, params: GetPromptParams): Promise<{ content: { [x: string]: unknown; messages: { role: "user" | "assistant"; content: { type: "text"; text: string; annotations?: { audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; } | { type: "image"; data: string; mimeType: string; annotations?: { audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; } | { type: "audio"; data: string; mimeType: string; annotations?: { audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; } | { uri: string; name: string; type: "resource_link"; description?: string | undefined; mimeType?: string | undefined; size?: number | undefined; annotations?: { audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; icons?: { src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; title?: string | undefined; } | { type: "resource"; resource: { uri: string; text: string; mimeType?: string | undefined; _meta?: { [x: string]: unknown; } | undefined; } | { uri: string; blob: string; mimeType?: string | undefined; _meta?: { [x: string]: unknown; } | undefined; }; annotations?: { audience?: ("user" | "assistant")[] | undefined; priority?: number | undefined; lastModified?: string | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; }; }[]; _meta?: { [x: string]: unknown; "io.modelcontextprotocol/serverInfo"?: { version: string; name: string; websiteUrl?: string | undefined; description?: string | undefined; icons?: { src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; title?: string | undefined; } | undefined; } | undefined; description?: string | undefined; }; }>; declare function listTools(manager: MCPClientManager, params: ListToolsParams): Promise<{ tools: { inputSchema: { [x: string]: unknown; type: "object"; properties?: { [x: string]: string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | (string | number | boolean | /*elided*/ any | /*elided*/ any | null)[] | null; } | (string | number | boolean | { [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any | null; } | /*elided*/ any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null; } | undefined; required?: string[] | undefined; }; name: string; description?: string | undefined; outputSchema?: { [x: string]: unknown; $schema?: string | undefined; } | undefined; annotations?: { title?: string | undefined; readOnlyHint?: boolean | undefined; destructiveHint?: boolean | undefined; idempotentHint?: boolean | undefined; openWorldHint?: boolean | undefined; } | undefined; execution?: { taskSupport?: "forbidden" | "optional" | "required" | undefined; } | undefined; _meta?: { [x: string]: unknown; } | undefined; icons?: { src: string; mimeType?: string | undefined; sizes?: string[] | undefined; theme?: "light" | "dark" | undefined; }[] | undefined; title?: string | undefined; }[]; nextCursor: string | undefined; }>; /** * `listAll*` (this one and its `listAllResources` / `listAllPrompts` / * `listAllResourceTemplates` siblings below) manually walk pages via * `drainPaginatedList`, including its own repeated-cursor guard and * `MAX_PAGINATION_PAGES` cap. On beta.4 that manual walk is largely * redundant for the common case: the underlying `@modelcontextprotocol/ * client` `Client.listTools()` (etc.) already auto-aggregates every page * when called with no `cursor` — which is exactly how these helpers make * their first `fetchPage(undefined)` call. `drainPaginatedList`'s loop only * runs a second iteration if that first call still returns a `nextCursor`, * which the client's own aggregate never does (see * `pagination-parity.integration.test.ts` for the verified wire evidence, * including the surprising case: a server that returns a repeated `nextCursor` * makes the CLIENT's internal walk stop silently and return a partial * aggregate — not throw — so `drainPaginatedList`'s repeated-cursor guard * never even fires for that case either). * * Kept as public API regardless (no removals) — a `MCPClientManager` built * without the official SDK's auto-aggregation (or a future client whose * `listMaxPages` behavior differs) still needs this manual walk to be * correct, and callers already depend on this exact function signature. */ declare function listAllTools(manager: MCPClientManager, params: ListAllToolsParams): Promise; declare function listAllResources(manager: MCPClientManager, params: ListAllResourcesParams): Promise; declare function listAllPrompts(manager: MCPClientManager, params: ListAllPromptsParams): Promise; declare function listAllResourceTemplates(manager: MCPClientManager, params: ListAllResourceTemplatesParams): Promise; /** * Drains `skills/list` across every page. * * Reuses `drainPaginatedList` for the repeated-cursor and page-count guards — * an untrusted server must not be able to spin this loop forever. Unlike the * resource/prompt drains, this one also observes the pages themselves, because * two facts only exist ACROSS pages: the SEP-2549 caching attributes (taken * from the last page that carried them) and duplicate URIs. * * IMPORTANT: a drained listing is still not proof of absence. SEP-2640 says a * listing MAY be partial, so "captured before, missing from this drain" means * only "ask `skills/get`" — never "deleted". */ declare function listAllServerSkills(manager: MCPClientManager, params: ListAllServerSkillsParams): Promise; declare function withEphemeralClient(config: MCPServerConfig, fn: (manager: MCPClientManager, serverId: string) => Promise, options?: WithEphemeralClientOptions): Promise; declare function withDisposableManager(managerOrPromise: MCPClientManager | Promise, fn: (manager: MCPClientManager) => Promise): Promise; export { type GetPromptParams, type ListAllPromptsParams, type ListAllPromptsResult, type ListAllResourceTemplatesParams, type ListAllResourceTemplatesResult, type ListAllResourcesParams, type ListAllResourcesResult, type ListAllServerSkillsParams, type ListAllServerSkillsResult, type ListAllToolsParams, type ListAllToolsResult, type ListPromptsMultiParams, type ListPromptsParams, type ListResourcesParams, type ListToolsParams, type ReadResourceParams, type WithEphemeralClientOptions, getPrompt, listAllPrompts, listAllResourceTemplates, listAllResources, listAllServerSkills, listAllTools, listPrompts, listPromptsMulti, listResources, listTools, readResource, withDisposableManager, withEphemeralClient };