/** * The server `instructions` field (#339): what a client shows the model before * any tool definition. Claude Code loads only tool names and this text at * session start and fetches full definitions on demand, so this is where the * orientation that the tool names cannot carry has to live. * * Orientation, not personality: it describes the surface (how tools are * shaped, where the safety boundary is, which calls are version-sensitive) * and never tells the model how to behave. Nothing here names a resource, * a token or a URL. The text is a function of the server's own configuration * only (mode flags and, in fleet mode, the operator's default instance name, * which NAME_PATTERN has already validated), so it is the same for every * client of the same server. * * Every sentence should be something the model cannot infer from a tool name * and would otherwise learn from a failed call. Keep it short: it is paid on * every session, so it has a budget in the contract tests like the tool list. */ export interface InstructionsOptions { /** More than one Coolify instance is configured, so tools take `instance`. */ fleet: boolean; /** The instance used when `instance` is omitted (fleet mode only). */ defaultInstance: string; /** Only read-only tools are registered (MCP_READONLY in HTTP mode). */ readonly: boolean; /** * Destructive operations refuse unless the client supports elicitation * (HTTP mode). Off, the stdio default: without elicitation they run * unconfirmed, which the text must not paper over. */ requireElicitation: boolean; } export declare function buildInstructions(options: InstructionsOptions): string;