Call Kimi Code from Claude Code or Codex for delegation, review, and second opinions
Moonbridge demonstrates solid definition quality with consistent naming patterns (verb_noun: kimi_consult, kimi_delegate, kimi_review_changes), comprehensive descriptions (100-300 chars, well above 20-char minimum), and explicit input schemas with type definitions for all parameters. All 16 tools have descriptions and typed parameters. However, output schemas are not visible in the provided source code, only input schemas are documented. Error handling descriptions are present but lack actionable recovery guidance (e.g., 'what to do if kimi CLI is not installed'). Tool composition is excellent: clear separation of concerns (consult vs review vs delegate), async variants for long-running operations, and job management tools for async lifecycle. Security is well-handled: no credentials in parameters, clear isolation guarantees via worktree sandboxing documented in descriptions.
Full inventory of capabilities. Free (local only) tool that does not call the model. Use kimi_capabilities for the full inventory. Before overriding model or reasoning_effort, use kimi_models (or the kimi://models resource): `model` takes an ALIAS defined in the user's kimi config.toml, not a raw provider model id, and an unknown alias is rejected outright. Kimi does NOT reject an unrecognized reasoning_effort — it ignores it — so this server refuses one the alias does not declare rather than let a run silently use the default.
Call Kimi Code (a different model) from Claude Code for a second opinion, a structured review of your git changes, or a delegated coding task. kimi_delegate never edits your working tree — it returns a reviewable diff you apply yourself. The `kimi` CLI has no sandbox and no approval prompts, so this server constrains runs itself: kimi_consult and kimi_review_changes run under a generated agent profile with no shell and no write tools, and every tier runs in a throwaway git worktree. Read-only operations are constrained to the workspace and its parent directory. The worktree keeps a run's working directory away from your tree, but it is not a boundary — Kimi can write outside it if instructed to, so treat it as defense in depth, not containment. Every model-bearing call sends your inputs to your configured Kimi provider raw, and Kimi also auto-loads context implicitly. Kimi auto-discovers skills from AGENTS.md in the workspace root and the global root (both reachable from outside the workspace). Use kimi_consult for a read-only second opinion or Q&A — including on a diff you paste inline.
Async variant of kimi_consult for work that can exceed the synchronous deadline — a high-reasoning-effort or broad repo-grounded consult. Prefer this for focused work that finishes well inside the deadline.
Output schemas not documented in source code. While input schemas are explicit and well-typed, return types for all 16 tools are not visible. LLMs cannot plan downstream tool calls or extract required fields without documented output structure.
Error handling descriptions lack actionable recovery guidance. Descriptions state what tools do but do not explain what the LLM should do if a call fails (e.g., 'kimi CLI not installed' → 'run kimi_status first'). Errors should guide the agent's next step.
Job management tools (kimi_job_status, kimi_job_result, kimi_job_list) have minimal descriptions (65-70 chars). Descriptions should explain when to call each tool and what state transitions they represent (e.g., 'Poll this after calling an _async tool to check if work is complete').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
Implement a task in a throwaway git worktree and get back a reviewable diff. kimi_delegate never edits your working tree — it returns a reviewable diff you apply yourself. The `kimi` CLI has no sandbox and no approval prompts, so this server constrains runs itself. Every tier runs in a throwaway git worktree. The worktree keeps a run's working directory away from your tree, but it is not a boundary — Kimi can write outside it if instructed to, so treat it as defense in depth, not containment. Every model-bearing call sends your inputs to your configured Kimi provider raw, and Kimi also auto-loads context implicitly. Kimi auto-discovers skills from AGENTS.md in the workspace root and the global root (both reachable from outside the workspace).
Async variant of kimi_delegate for substantial implementation tasks. Prefer the matching _async variant for work that can exceed the synchronous deadline.
Preview a delegate call's worktree baseline without spending. To preview a call without spending, use kimi_dry_run for a review or kimi_delegate_dry_run for a delegate's worktree baseline.
Preview a review call without spending. To preview a call without spending, use kimi_dry_run for a review or kimi_delegate_dry_run for a delegate's worktree baseline.
Cancel an async job. Cancel is idempotent — a terminal job is returned unchanged and cancellation re-validates concurrent completion, so a retry after a lost response has no additional effect.
Consume and delete the retained record of a completed async job. Repeat consume returns not-found, a different response, so it is non-idempotent.
List all async jobs. Observable and mutable shared state that outlives the response.
Retrieve the result of a completed async job. Each active tool has an _async variant, polled via kimi_job_status/result/consume_result/cancel/list; even a sync consult/review/delegate records its run as a job (meta.job_id), so a dropped connection can be recovered the same way.
Poll the status of an async job. Each active tool has an _async variant, polled via kimi_job_status/result/consume_result/cancel/list; even a sync consult/review/delegate records its run as a job (meta.job_id), so a dropped connection can be recovered the same way.
List available models and their reasoning effort options from the user's kimi config.toml. Free (local only) tool that does not call the model. Use kimi_models (or the kimi://models resource) before overriding model or reasoning_effort: `model` takes an ALIAS defined in the user's kimi config.toml, not a raw provider model id, and an unknown alias is rejected outright.
Structured review of changes gathered from git (working_tree, branch, or commit). Prefer it over kimi_consult whenever the changes already live in git. kimi_review_changes runs under a generated agent profile with no shell and no write tools, and every tier runs in a throwaway git worktree. Read-only operations are constrained to the workspace and its parent directory. The worktree keeps a run's working directory away from your tree, but it is not a boundary — Kimi can write outside it if instructed to, so treat it as defense in depth, not containment. Every model-bearing call sends your inputs to your configured Kimi provider raw, and Kimi also auto-loads context implicitly. Kimi auto-discovers skills from AGENTS.md in the workspace root and the global root (both reachable from outside the workspace).
Async variant of kimi_review_changes for multi-file or whole-branch review. Prefer the matching _async variant for work that can exceed the synchronous deadline.
Confirm the kimi CLI is installed and authenticated. Free (local only) tool that does not call the model. Before the first paid call in a session, run kimi_status to confirm the kimi CLI is installed and authenticated.
kimi_job_consume_result description does not explain the non-idempotent behavior clearly enough for LLMs. The note 'Repeat consume returns not-found' is present but buried; LLMs may not recognize this as a state-changing operation that should not be retried blindly.
Async tool descriptions do not explain the polling pattern or timeout expectations. LLMs need to know: How long do async jobs typically take? When should polling stop? What happens if a job is abandoned?