/** * `fuzz` — runs the schema-aware adversarial fuzzer against an MCP * server and emits a v0.1 fuzz document. * * Per docs/SPEC.md §"Fuzzing strategy": * * - Six axes (boundary / type-confusion / encoding / path-traversal / * url-hostility / schema-violation) * - Default budget: 200 calls per tool * - Deterministic PRNG, default seed 0xC0FFEE * - Records what happened — does NOT classify "success" * * The output JSON is consumed by the classifier (week 3) and the * reporter (week 3). Every entry has a `rationale` so a human * reviewer can grep for the interesting cases without re-running. */ import type { Client } from "@modelcontextprotocol/sdk/client/index.js"; import type { ToolInventory } from "../enumerate.js"; import type { FuzzResults } from "./types.js"; export { FUZZ_SCHEMA } from "./types.js"; export type { FuzzAxis, FuzzCall, FuzzOutcome, FuzzResults, FuzzToolSummary, } from "./types.js"; export interface FuzzOptions { /** Per-tool call budget. Default: 200. */ budget?: number; /** PRNG seed for deterministic re-runs. Default: 0xC0FFEE. */ seed?: number; /** If set, only fuzz these tool names (rest are skipped). */ onlyTools?: readonly string[]; /** Optional per-call timeout in ms. Default: 5000. */ timeoutMs?: number; } /** * Run the fuzzer against `client`, given a previously-emitted * `inventory`. Returns a fuzz document. * * The `inventory` parameter (instead of re-enumerating internally) * is deliberate: the user can inspect / filter tools first, then * pass the resulting subset. */ export declare function fuzz(client: Client, inventory: ToolInventory, options?: FuzzOptions): Promise; //# sourceMappingURL=index.d.ts.map