# Interface ConsensusVoteDeps

MCP exports - MCP server implementation Split from index.ts for file size compliance (Issue #285) Updated Issue #538: Added missing tool registration exports

interface ConsensusVoteDeps {
notifier?: IMcpNotifier;
logger?: ILogger;
rateLimiter: McpRateLimiter;
security?: {
allowedPaths: string[];
blockedPatterns: string[];
rateLimit: {
enabled: boolean;
requestsPerMinute: number;
perTool?: Record<
string,
{ capacity: number; refillRate: number; refillIntervalMs: number },
>;
};
secretsFile?: string;
policy?: {
defaultMode: "read-only"
| "read-write";
policyMode: "warn" | "enforce";
};
sandbox?: {
mode: "policy"
| "none"
| "container";
fallbackToPolicy: boolean;
dockerImage?: string;
networkEnabled: boolean;
};
timeout?: {
defaultTimeoutMs: number;
maxTimeoutMs: number;
enableLogging: boolean;
uriValidation: boolean;
perToolTimeout?: Record<string, number>;
};
toolAllowlist?: string[];
audit?: {
enabled: boolean;
logDir?: string;
minSeverity: "info"
| "warning"
| "critical";
enableHashChain: boolean;
maxFileSizeBytes: number;
maxFiles: number;
};
auth?: {
enabled: boolean;
method: "token"
| "oauth2";
tokenHeader: string;
tokenFile?: string;
};
};
}

#### Hierarchy (View Summary)

- BaseMcpToolDeps
  - ConsensusVoteDeps

- Defined in packages/nexus-agents/src/mcp/tools/consensus-vote.ts:90

##### Index

### Properties

notifier?
logger?
rateLimiter
security?

## Properties

### `Optional` notifier

notifier?: IMcpNotifier

MCP notifier for client-visible logging (Issue #974)

- Defined in packages/nexus-agents/src/mcp/tools/consensus-vote.ts:92

### `Optional` logger

logger?: ILogger

Optional logger

Inherited from BaseMcpToolDeps.logger

- Defined in packages/nexus-agents/src/mcp/tools/tool-result.ts:33

### rateLimiter

rateLimiter: McpRateLimiter

Rate limiter for throttling tool calls (required)

Inherited from BaseMcpToolDeps.rateLimiter

- Defined in packages/nexus-agents/src/mcp/tools/tool-result.ts:35

### `Optional` security

security?: {
allowedPaths: string[];
blockedPatterns: string[];
rateLimit: {
enabled: boolean;
requestsPerMinute: number;
perTool?: Record<
string,
{ capacity: number; refillRate: number; refillIntervalMs: number },
>;
};
secretsFile?: string;
policy?: {
defaultMode: "read-only"
| "read-write";
policyMode: "warn" | "enforce";
};
sandbox?: {
mode: "policy"
| "none"
| "container";
fallbackToPolicy: boolean;
dockerImage?: string;
networkEnabled: boolean;
};
timeout?: {
defaultTimeoutMs: number;
maxTimeoutMs: number;
enableLogging: boolean;
uriValidation: boolean;
perToolTimeout?: Record<string, number>;
};
toolAllowlist?: string[];
audit?: {
enabled: boolean;
logDir?: string;
minSeverity: "info"
| "warning"
| "critical";
enableHashChain: boolean;
maxFileSizeBytes: number;
maxFiles: number;
};
auth?: {
enabled: boolean;
method: "token"
| "oauth2";
tokenHeader: string;
tokenFile?: string;
};
}

Security configuration (includes timeout settings)

#### Type Declaration

- ##### allowedPaths: string[]

- ##### blockedPatterns: string[]

- ##### rateLimit: {
  enabled: boolean;
  requestsPerMinute: number;
  perTool?: Record<
  string,
  { capacity: number; refillRate: number; refillIntervalMs: number },
  >;
  }

  - ##### enabled: boolean

  - ##### requestsPerMinute: number

  - ##### `Optional` perTool?: Record<
    string,
    { capacity: number; refillRate: number; refillIntervalMs: number },
    >

    Per-tool rate limits (Issue #274 Phase 2)

- ##### `Optional` secretsFile?: string

- ##### `Optional` policy?: { defaultMode: "read-only" | "read-write"; policyMode: "warn" | "enforce" }

  Policy firewall configuration

  - ##### defaultMode: "read-only" | "read-write"

    Default execution mode for tool operations (default: 'read-only')

  - ##### policyMode: "warn" | "enforce"

    Policy enforcement mode (default: 'enforce')

- ##### `Optional` sandbox?: {
  mode: "policy" | "none" | "container";
  fallbackToPolicy: boolean;
  dockerImage?: string;
  networkEnabled: boolean;
  }

  Sandbox execution configuration (Issue #175)

  - ##### mode: "policy" | "none" | "container"

    Sandbox execution mode (default: 'policy')

  - ##### fallbackToPolicy: boolean

    Fall back to policy mode if container mode unavailable (default: true)

  - ##### `Optional` dockerImage?: string

    Docker image to use in container mode (default: 'node:22-alpine')

  - ##### networkEnabled: boolean

    Enable network access in container mode (default: false)

- ##### `Optional` timeout?: {
  defaultTimeoutMs: number;
  maxTimeoutMs: number;
  enableLogging: boolean;
  uriValidation: boolean;
  perToolTimeout?: Record<string, number>;
  }

  Timeout configuration (Issue #271, CVE-2026-0621)

  - ##### defaultTimeoutMs: number

    Default timeout in milliseconds (default: 30000)

  - ##### maxTimeoutMs: number

    Maximum timeout in milliseconds (default: 300000)

  - ##### enableLogging: boolean

    Whether to log timeout events (default: true)

  - ##### uriValidation: boolean

    Enable URI validation to prevent ReDoS (default: true)

  - ##### `Optional` perToolTimeout?: Record<string, number>

    Per-tool timeout overrides in milliseconds (Issue #657)

- ##### `Optional` toolAllowlist?: string[]

  Tool allowlist — when set, only listed tools are registered (Issue #740)

- ##### `Optional` audit?: {
  enabled: boolean;
  logDir?: string;
  minSeverity: "info" | "warning" | "critical";
  enableHashChain: boolean;
  maxFileSizeBytes: number;
  maxFiles: number;
  }

  Audit logging configuration (Issue #740 Phase 2)

  - ##### enabled: boolean

    Enable audit logging (default: true)

  - ##### `Optional` logDir?: string

    Log directory (default: ~/.nexus-agents/audit)

  - ##### minSeverity: "info" | "warning" | "critical"

    Minimum severity to log (default: 'info')

  - ##### enableHashChain: boolean

    Enable tamper-evident hash chain (default: true)

  - ##### maxFileSizeBytes: number

    Maximum log file size in bytes (default: 10MB)

  - ##### maxFiles: number

    Maximum number of log files to retain (default: 10)

- ##### `Optional` auth?: {
  enabled: boolean;
  method: "token" | "oauth2";
  tokenHeader: string;
  tokenFile?: string;
  }

  Authentication configuration (Issue #739)

  - ##### enabled: boolean

    Enable authentication for network-exposed transports (default: true)

  - ##### method: "token" | "oauth2"

    Authentication method (default: 'token')

  - ##### tokenHeader: string

    Header name for bearer token (default: 'Authorization')

  - ##### `Optional` tokenFile?: string

    Token file path (default: ~/.nexus-agents/auth/server-token)

Inherited from BaseMcpToolDeps.security

- Defined in packages/nexus-agents/src/mcp/tools/tool-result.ts:37