/**
 * # kestrel.markets/mcp — the MCP face as a lossless SDK projection (kestrel-djm.7)
 *
 * One of ADR-0004's four equal faces (http / sdk / cli / mcp). `createKestrelMcpServer({ transport })` builds
 * `createSdk(transport)` internally and exposes it as an MCP server — a JSON-RPC 2.0 dispatcher over RESOURCES
 * (the static djm.8 catalog + the immutable, content-addressed artifacts) and TOOLS (validate, the incremental
 * Session lifecycle, Grade, and Operation continuation). It is a THIN PROJECTION: it marshals MCP requests into
 * SDK calls and marshals the SDK's djm.2 protocol objects back out VERBATIM — no runtime semantics of its own,
 * no fifth Kestrel statement kind. A 402/Offer is structured continuation DATA; the failure taxonomy
 * (transport error ≠ Kestrel refusal ≠ STAND_DOWN) is caller-distinguishable and fail-closed.
 *
 * @example
 * ```ts
 * import { createKestrelMcpServer, serveStdio } from "kestrel.markets/mcp";
 * import { localTransport, remoteTransport } from "kestrel.markets/sdk";
 *
 * const server = createKestrelMcpServer({ transport: localTransport() });      // in-process execution
 * // const server = createKestrelMcpServer({ transport: remoteTransport({ baseUrl }) }); // managed backend
 * await serveStdio(server); // newline-delimited JSON-RPC 2.0 over stdin/stdout
 * ```
 */

export { createKestrelMcpServer } from "./server.ts";
export type { KestrelMcpServer, KestrelMcpServerOptions } from "./server.ts";

export { serveStdio } from "./stdio.ts";

export {
  TOOL,
  CATALOG_URI_PREFIX,
  ARTIFACT_URI_PREFIX,
  artifactUri,
  McpProtocolError,
  PARSE_ERROR,
  INVALID_REQUEST,
  METHOD_NOT_FOUND,
  INVALID_PARAMS,
  INTERNAL_ERROR,
} from "./protocol.ts";
export type {
  JsonRpcId,
  JsonRpcRequest,
  JsonRpcResponse,
  JsonRpcError,
  Resource,
  ResourceContents,
  ToolResult,
  ToolDescriptor,
  ContentBlock,
  ToolName,
} from "./protocol.ts";
