export interface JsonSchemaObject { type: 'object'; properties: Record; required?: string[]; additionalProperties: false; } export type JsonSchemaProperty = { type: 'string'; description?: string; enum?: string[]; } | { type: 'boolean'; description?: string; } | { type: 'number'; description?: string; } | { type: 'array'; description?: string; items: { type: 'string'; }; }; export interface McpToolDefinition { name: string; title: string; description: string; inputSchema: JsonSchemaObject; annotations: { readOnlyHint?: boolean; destructiveHint?: boolean; idempotentHint?: boolean; }; } export declare const MCP_TOOLS: readonly [{ readonly name: "context_pack"; readonly title: "Build Kyro context pack"; readonly description: "Return the minimal routing/task context an agent should load for a Kyro scope. Use before resuming work or executing a task."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly task_id: { readonly type: "string"; readonly description: "Optional active sprint task id. Empty string means handoff.nextTaskId."; }; readonly verbosity: { readonly type: "string"; readonly enum: ["concise", "detailed"]; readonly description: "Output verbosity hint."; }; }; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }, { readonly name: "doctor_artifacts"; readonly title: "Run Kyro artifact doctor"; readonly description: "Validate Kyro project and scope artifact shape, snapshots, narratives, and clarity markers. Use to check a scope is well-formed before planning or closing."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; }; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }, { readonly name: "analyze_scope"; readonly title: "Analyze Kyro scope semantics"; readonly description: "Run semantic cross-checks for clarity, coverage, dependencies, debt, spec traceability, and project principles. Use to find blocking findings before executing or closing."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; }; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }, { readonly name: "scope_list"; readonly title: "List Kyro scopes"; readonly description: "List known Kyro scopes, their status, and which one is active. Use to discover scopes before targeting one."; readonly inputSchema: { readonly type: "object"; readonly properties: {}; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }, { readonly name: "scope_inspect"; readonly title: "Inspect Kyro scope"; readonly description: "Return artifact doctor checks for one scope. Use to inspect a single scope by id."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id to inspect."; }; }; readonly required: ["scope"]; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }, { readonly name: "close_sprint"; readonly title: "Close active Kyro sprint"; readonly description: "Build or apply the deterministic lossless scope-checkpoint close plan. Use when every sprint task passed review and the sprint is ready to close. Without confirm:true it returns the plan and writes nothing."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly outcome: { readonly type: "string"; readonly enum: ["shipped", "partial", "aborted"]; readonly description: "Sprint outcome."; }; readonly note: { readonly type: "string"; }; readonly summary: { readonly type: "string"; }; readonly recommendations: { readonly type: "array"; readonly items: { readonly type: "string"; }; }; readonly learnings: { readonly type: "array"; readonly items: { readonly type: "string"; }; }; readonly confirm: { readonly type: "boolean"; readonly description: "Required for mutation. Omit or false to return the dry-run plan without writing."; }; }; readonly required: ["outcome"]; readonly additionalProperties: false; }; readonly annotations: { readonly destructiveHint: true; readonly idempotentHint: true; }; }, { readonly name: "repair_scope"; readonly title: "Repair Kyro scope formatting"; readonly description: "Build or apply a sprint.json normalization plan. Use when doctor reports formatting drift. Without confirm:true it returns the plan and writes nothing."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly confirm: { readonly type: "boolean"; readonly description: "Required for mutation. Omit or false to return the dry-run plan without writing."; }; }; readonly additionalProperties: false; }; readonly annotations: { readonly destructiveHint: true; readonly idempotentHint: true; }; }, { readonly name: "remediate_scope"; readonly title: "Remediate a closed Kyro scope"; readonly description: "Preview or apply a typed, append-only correction to a CLOSED scope whose live state no longer satisfies the contract. Use when doctor reports schema drift in a scope that was already closed, so its history must not be rewritten. Checkpoints, snapshots, narratives and ledger commitments are verified and never rewritten. Only registry operations are accepted (generic JSON Patch is rejected). Without confirm:true it returns the plan and writes nothing."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly manifest: { readonly type: "string"; readonly description: "Path to a scope-remediation-manifest v1 or v3 document."; }; readonly confirm: { readonly type: "boolean"; readonly description: "Required for mutation. Omit or false to return the dry-run plan without writing."; }; }; readonly required: ["manifest"]; readonly additionalProperties: false; }; readonly annotations: { readonly destructiveHint: true; readonly idempotentHint: true; }; }, { readonly name: "remediate_canonicalize_prepare"; readonly title: "Prepare a debt canonicalization (read-only)"; readonly description: "Read one legacy debt record and report what canonicalization would need: its classification, the values already observed, the values still undecided, and the evidence behind each suggestion. Use when a debt cannot be repaired by origin alone because a canonical field is absent or invalid, or legacy-only keys such as detail/resolution/addedSprint must be retired. A suggested value is evidence, never authorization: only values you pass explicitly become canonical. With every value settled it returns a complete manifest for review. Read-only: it writes nothing, not even the manifest. Apply the reviewed manifest with remediate_scope."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly debt_id: { readonly type: "string"; readonly description: "Id of the debt record to canonicalize."; }; readonly origin: { readonly type: "number"; readonly description: "Explicit sprint number the debt originated in. Omit to leave undecided."; }; readonly priority: { readonly type: "string"; readonly enum: ["critical", "high", "medium", "low"]; readonly description: "Explicit priority. Omit to leave undecided; no observation implies it."; }; readonly target_sprint: { readonly type: "number"; readonly description: "Explicit target sprint. Omit to leave undecided; pass target_sprint_null:true for an explicit null."; }; readonly target_sprint_null: { readonly type: "boolean"; readonly description: "Set true to decide targetSprint is explicitly null."; }; readonly note: { readonly type: "string"; readonly description: "Explicit canonical note. Omit to leave undecided."; }; readonly reason: { readonly type: "string"; readonly description: "Why this record is being canonicalized."; }; readonly actor: { readonly type: "string"; readonly description: "Operator id recorded in the manifest provenance."; }; }; readonly required: ["debt_id"]; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }, { readonly name: "remediate_canonicalize_preview"; readonly title: "Preview a debt canonicalization manifest (read-only)"; readonly description: "Re-check a canonicalization manifest against the state on disk: schema, protocol revision, scope binding, the whole-debt collection digest, preserved identity and lifecycle, and the legacy keys it retires. Use before handing a manifest on, or after the scope may have changed. The exact after-image is shown only when the manifest is complete and still true. Read-only: it writes nothing; apply the reviewed manifest with remediate_scope."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly manifest: { readonly type: "string"; readonly description: "Path to a scope-remediation-manifest v3 document carrying debt.canonicalize operations."; }; }; readonly required: ["manifest"]; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }, { readonly name: "recertify_scope"; readonly title: "Certify a remediated Kyro scope"; readonly description: "Preview or apply a certification recording that a remediated scope's corrected state was independently validated against named, re-verifiable evidence. Use after remediate, once the corrections have been checked. Every evidence digest is re-derived from the workspace; certification is refused when the chain does not replay to live state, when the chain head has moved, when evidence is empty, or when the verdict is not a pass. A certificate covers one chain head, so remediating again drops it. Without confirm:true it returns the plan and writes nothing."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly manifest: { readonly type: "string"; readonly description: "Path to a scope-certification-manifest v1 document."; }; readonly confirm: { readonly type: "boolean"; readonly description: "Required for mutation. Omit or false to return the dry-run plan without writing."; }; }; readonly required: ["manifest"]; readonly additionalProperties: false; }; readonly annotations: { readonly destructiveHint: true; readonly idempotentHint: true; }; }, { readonly name: "review_task"; readonly title: "Review a Kyro task (maker/checker)"; readonly description: "Run the deterministic maker/checker on a task and write its verdict. Use when a task is done and needs verification. Without confirm:true it returns the plan and writes nothing; a pass that fails the deterministic checks is refused."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly task_id: { readonly type: "string"; readonly description: "Active sprint task id."; }; readonly verdict: { readonly type: "string"; readonly enum: ["pass", "fail"]; readonly description: "Reviewer judgment. Defaults to pass."; }; readonly checked_criteria: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly description: "Acceptance criteria the reviewer checked. Defaults to all on a pass."; }; readonly waived_criteria: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly description: "Acceptance criteria waived as \"criterion::reason\". Reason is required."; }; readonly findings: { readonly type: "array"; readonly items: { readonly type: "string"; }; readonly description: "Reviewer findings as \"severity:detail\" (severity = critical|warning|suggestion)."; }; readonly by: { readonly type: "string"; readonly description: "Reviewer actor id. Defaults to \"checker\"."; }; readonly request_digest: { readonly type: "string"; readonly description: "Digest returned by a preview. A repeated applied digest is a no-op."; }; readonly confirm: { readonly type: "boolean"; readonly description: "Required for mutation. Omit or false to return the dry-run plan without writing."; }; }; readonly required: ["task_id"]; readonly additionalProperties: false; }; readonly annotations: { readonly destructiveHint: true; readonly idempotentHint: true; }; }, { readonly name: "trace_tail"; readonly title: "Read recent Kyro trace events"; readonly description: "Return the most recent append-only trace events for a scope. Use for observability or debugging a run. Read-only; trace never drives routing."; readonly inputSchema: { readonly type: "object"; readonly properties: { readonly scope: { readonly type: "string"; readonly description: "Kyro scope id. Omit to use activeScope or the only existing scope."; }; readonly limit: { readonly type: "string"; readonly description: "Max events to return (most recent). Defaults to 20."; }; }; readonly additionalProperties: false; }; readonly annotations: { readonly readOnlyHint: true; }; }]; export declare function getTool(name: string): McpToolDefinition | null; //# sourceMappingURL=tool-catalog.d.ts.map