import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { DomainName } from "./constants.js"; import { type AccessPolicy } from "./config/access-policy.js"; import { type RegistrationIndex } from "./tools/registration-decorators.js"; export { REGISTERED_DOMAINS } from "./constants.js"; export type { DomainName } from "./constants.js"; export declare const SERVER_NAME = "boondmanager-mcp-server"; export declare const SERVER_VERSION: string; /** * `Implementation.description` (MCP 2025-11-25) — a human-readable summary of * what this server does, returned in the `initialize` result alongside the * name/version. Sourced from `package.json` so it matches the npm listing and * `server.json` (the registry manifest) without a fifth source of truth. */ export declare const SERVER_DESCRIPTION: string; /** * Domain → registration function, in the canonical order of REGISTERED_DOMAINS. * Coupling the domain name to its registrar lets the access policy filter by * domain WITHOUT parsing tool names (no fragile regex on multi-word domains * like `provider-invoices`). Each registrar accepts an optional policy; only * `registerWorkflowTools` uses it (to mirror the prompt-level domain filter), * the others ignore the extra argument. * * ⚠️ **The order of this array is a protocol guarantee, not a convenience.** * `tools/list` must return a deterministic sequence (recommended by the * 2026-07-28 revision) so clients can cache the catalogue and so the prompt * cache keeps hitting across sessions: the SDK lists tools in registration * order, which is this order. Reordering entries — or introducing * non-determinism inside a registrar (iterating a `Set`, a dynamically built * object, an async race) — invalidates every client-side cache of this * server's tool list. `src/server.test.ts` pins both properties. * * Exported so the TOOLS.md generator can reuse the exact same list/order * instead of duplicating it. */ export declare const TOOL_REGISTRARS: ReadonlyArray void]>; /** * Register the full (policy-filtered) tool/prompt/resource surface onto a * server. Extracted from createMcpServer so tests can exercise the exact same * wiring against a stub server with an arbitrary policy. * * - `target` is either the server itself (no operation filter) or a Proxy that * drops disallowed-operation tools at registration time. * - Tool domains are skipped wholesale when the domain is disallowed. * - Prompts are domain-filtered (a prompt is cut if any domain it orchestrates * is disallowed, so the runbook never points at missing tools). * - Resources (reference dictionaries) are left intact (the lookup substrate). * - Each registrar is additionally wrapped per-domain * (`decorateRegistrations`): search schemas get filter-correction messages, * and every tool name is recorded against its domain for the icon layer. * * `index` is filled as a side effect; pass the one `installProtocolIcons` was * given so icons resolve. Callers that don't care (tests, catalogue generator) * can omit it. */ export declare function registerAll(server: McpServer, policy: AccessPolicy, index?: RegistrationIndex): void; export declare function createMcpServer(): McpServer; //# sourceMappingURL=server.d.ts.map