AgentNave
AgentNave is a local MCP server that lets a manager agent delegate work to installed AI CLIs and coordinate saved multi-agent meetings.
Delegate a private CLI task with
start_agent, choosing provider, prompt, cwd, model/effort/options, and optionally continuing a nativesession_id.Run 2–7 seat meeting rounds with
run_roundin parallel or serial order, with shared prompts, private seat instructions, isolation, and retry of failed seats.Review meeting answers with
decide_answers, publishing them to other seats or keeping them private.Wait for task/round outcomes with
waitand stop running work withcancel.List active handles and saved conversations and launch a read-only dashboard with
list; read saved conversations withread_conversation.Inspect configured CLI members, defaults, permissions, review seats, and orchestration seats with
list_members.Hand over or take over a whole boss-chat workspace with
handover.
AgentNave 是一个本地 MCP 服务。 你正在用的 Agent(Claude Code、Codex……)当老板,把活派给本机装好的其他 CLI:可以单独派一位,也可以拉几位一起,并联各答各的,或者串联轮流发言。另有一个托盘「小办公室」App: 谁在工位上干活、谁去了会议室、大家说了什么,都能看到。
🎬 实机演示
Related MCP server: Claude Code Manager WAN
✨ 能做什么
🧑💼 派一位组员干活:
start_agent把任务交给一个 CLI,结果只回给老板👯 拉几位组员开个会:
run_round请 2–7 位组员进会议室。默认开两轮并联:第一轮各自给方案,第二轮看过大家的回答再补充,最后由 boss 总结。想让大家最后接力收个尾,就加一轮串联,后发言的人能看到前面的回答🔍 先审再公开:开了审核,每条回答由老板决定公开还是留作私聊,不公开的回答其他席位看不到
🏢 托盘小办公室:工位、会议室、对话记录一目了然,旧工作区可以一键清理
🧠 原生会话照旧:每个 CLI 用自己的登录、配置和原生会话,保留
session_id,之后能接着聊🤝 换个聊天接着干:对老板说「转交这个会话」,到新聊天说「接手」;额度用完写不了交接文档,也能让新老板接手那个宿主的会话
👀 谁当老板,谁当组员
角色 | 支持 |
老板(接入 AgentNave、负责派活) | Claude 桌面端、Claude Code、Codex CLI、CodeBuddy Code、WorkBuddy 桌面端、Grok CLI、Antigravity、Pi、DeepSeek Harness、ZCode、Hermes |
组员(被派活的 CLI) | Claude Code、Codex CLI、CodeBuddy Code、Grok CLI、Antigravity CLI、Pi Coding Agent、DeepSeek Harness、ZCode |
老板的范围更大:上面这些宿主都能当老板,桌面端也可以;组员目前只有表里这几个 CLI。宿主不会用 start_agent 把单个任务派给自己的 CLI,但会议里可以有它的席位。
🎀 组员图鉴
小人按模型家族分配,不看用的是哪个 CLI:用 Codex CLI 跑 GPT,出场的就是 GPT 那位小龙娘。没有专属形象的模型由「新同事」代班。 想换成自己的小人,在 App 设置的「外观」页上传一套就行。
🚀 快速开始
先准备好 uv、Git,以及至少一个已经登录的 CLI。AgentNave 不帮你安装或登录 CLI。
方式一:托盘 App(macOS,推荐)
到 Releases 下载
AgentNave_<版本>_universal.dmg,拖进「应用程序」。打开 App,按「开始使用」走完四步:安装本机服务 → 接入一个宿主 → 设置组员 → 在宿主里派一次任务。 接入宿主时,App 会顺便装好配套的
agentnave-manager和agentnave-handoverSkill。回到宿主里说一句试试:
用 agentnave 让两位组员各自回答一遍:这个仓库是做什么的?
方式二:手动安装(Windows / Linux,或不装 App)
当前配套版本是 v0.65.0,运行时和 Skill 都要从这个 tag 安装:
uv tool install --python 3.12 "git+https://github.com/TimWongUp/agentnave.git@v0.65.0"然后按安装指南注册 MCP、安装 agentnave-manager 和 agentnave-handover Skill,再做验证。 安装指南本来就是写给 Agent 看的,可以直接交给你的 Agent,让它照着检查和安装。 可选的 agentnave-review Skill 是一道按风险分级的 PR/合并评审门,评审工位也由 AgentNave 派出去的只读 CLI 担任。
任务和会议的历史保存在 ~/.agentnave/(也可以用 AGENTNAVE_DATA_DIR 指定别的目录)。各 CLI 的登录、配置和原生会话仍归 CLI 自己管。
🧰 MCP 工具一览
工具 | 用途 |
| 派一个 CLI 任务,立即返回 |
| 开一场 2–7 席的会议、跑一轮并联或串联,或者以主持人身份发言 |
| 默认最多等 240 秒,任一任务或轮次就绪即返回; |
| 停止任务或轮次,返回它的最终结果 |
| 开了审核时,逐条决定回答公开还是留作私聊 |
| 列出当前句柄和已保存的对话,并启动只读看板 |
| 按 App 里看到的样子读回一段对话 |
| 读取 App 里设定的组员默认值,以及某个 CLI 支持的参数 |
| 把本聊天的整个工作区交给另一个老板聊天,或列出、认领等待接手的工作区 |
没传的 model、effort 和 options 会套用 App 里的组员默认值,仍没有档位时按 CLI 自身设置的档位传入;回执的 defaults_applied 会写明补了哪些;显式参数优先。
CLI 选择与参数见 agentnave-manager Skill,审核、主持人发言、隔离席位和看板见会话指南,
稳定接口与输出上限见架构说明。
🧭 分工:AgentNave 管什么
AgentNave 只负责把活派出去、管好进程、把结果原样带回来。怎么拆任务、找谁、要不要复核,都由老板来定,因为完整的上下文在老板手里。
AgentNave | 老板(调用方 Agent) |
各 CLI 的命令适配 | 规划和拆分任务 |
内存中的调用生命周期 | 选 CLI、选模型 |
POSIX 进程组 / Windows Job Object | 并行度、复核与综合 |
统一格式的终态结果 | 重试、权限和 worktree |
保存的并联/串联会议轮次 | 谁来答、按什么顺序、答得行不行 |
派出去的 CLI 没法找人点「批准」,所以 AgentNave 默认让它用自带的自动审批;CLI 没有自动审批时就直接放开。在 App 里也可以把某个 CLI 改成完全放开。
AgentNave 没有给人用的命令行,agentnave-mcp 只是 MCP 宿主启动它用的 STDIO 入口。
调用句柄只存在于当前 MCP 服务进程里,完成七天后失效。服务停止时,AgentNave 会尽力结束仍留在 Provider 进程树里的进程。
重启后找不回旧句柄,但保存的会议可以继续;留下的 Provider session_id 也可以传给新的 start_agent 接着用。
在 macOS/Linux 上,AgentNave 给每个 Provider 配一个专用的 POSIX 进程组 supervisor;在 Windows 上用 kill-on-close 的 Job Object: Provider 以挂起状态创建,先加入 Job Object 再恢复运行,子孙进程就不会跑到受管进程树之外。
AgentNave 不是沙箱。 在 POSIX 上,有命令权限的同用户 Provider 可以主动脱离守护、杀掉 supervisor,或用别的方式逃出进程组清理。 Windows Job Object 只管进程树归属,不能把 Provider 和用户账户或机器的其余部分隔离开。真正的安全边界是各 Provider 自己的权限设置; 需要对抗性隔离时,请使用操作系统级别的隔离。
下面的检查用于开发用的 checkout,不适用于上面的 uv tool 安装。完整流程见 CONTRIBUTING.md。
uv sync --locked --all-groups
uv run ruff format --check .
uv run ruff check .
uv run pyright
uv run pytest🤝 参与贡献
欢迎通过 GitHub Issue 和 Pull Request 参与,开发流程和验证要求见 CONTRIBUTING.md。 安全漏洞请不要发公开 Issue,按 SECURITY.md 走仓库的私密报告渠道。
🙏 致谢
托盘查看会话的思路,以及读取 Claude、Codex 会话记录判断 boss 所在应用的做法,参考了 magpie。CLI 图标来自 LobeHub Icons(MIT)。
📄 许可证
AgentNave 以 MIT 许可证发布。
Available Tools
9 toolscancelCancel a task or roundADestructiveIdempotent
Stop a task or round; return its cancelled or already-finished result. Running seats become absent, unstarted seats skip, published answers stay and undecided answers stay private. CLI side effects are not undone.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | An invocation_id from start_agent or a round_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| round | No | |
| invocation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare destructiveHint=true and idempotentHint=true, the description adds substantive semantics beyond them: what happens to running seats (become absent), unstarted seats (skip), published answers (retained) versus undecided answers (stay private), and that CLI side effects are not undone. That is exactly the 'what gets destroyed and what survives' context an agent needs before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then two compact clauses covering return shape and state outcomes. Every clause carries information an agent cannot get from the annotations or schema; nothing is redundant padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists and annotations cover safety/idempotency, so the description needn't explain return values; it nonetheless covers the state transitions well. The only gap is operational context — no note on authorization requirements or on calling this after an invocation has already been reaped by another actor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented ('An invocation_id from start_agent or a round_id'). The description adds no meaning beyond the schema — it never mentions the id or its two accepted forms — so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Stop a task or round' — and immediately adds the return nuance ('cancelled or already-finished result'). No sibling (start_agent, run_round, wait, decide_answers) performs a stop/cancel action, so the tool is unambiguously distinguishable from the listed alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer it should call this when it wants to halt an in-flight invocation or round. There is no explicit when-not-to-use guidance, no mention of which sibling to prefer for graceful termination (e.g. handover), and no statement of the preconditions on the id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decide_answersPublish answers under review or keep them privateAIdempotent
Decide held answers atomically: publish shares with peers; private keeps between boss and seat. Repeating a decision is idempotent; changing it is rejected. Parallel rounds commit after all decisions; serial rounds then start the next seat. Returns after local commit when no work/review remains: finished needs no further call; running/review requires wait.
| Name | Required | Description | Default |
|---|---|---|---|
| round_id | Yes | ||
| decisions | Yes | seat_id -> publish or private |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| status | Yes | |
| entries | Yes | |
| round_id | Yes | |
| committed | Yes | |
| decisions | Yes | |
| pending_review | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: annotations already declare idempotentHint=true, but the description explains the exact semantics (repeat OK, change rejected), plus atomicity across seats, parallel-vs-serial commit ordering, and the post-commit finish-state contract. This is the kind of operational detail an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its two outcomes, then the commit/return semantics. Dense and telegraphic ("finished needs no further call") but nearly every clause carries operational meaning; a slightly less clipped phrasing would read better without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values needn't be spelled out, yet the description still supplies the commit-ordering and next-step state contract that the schema won't convey. The only real gap is round_id provenance and whether the decisions map must cover all held seats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers decisions ("seat_id -> publish or private") but round_id has no description, giving 50% coverage. The description compensates by explaining what 'seat' means in context and the effect of each publish/private value, though it never clarifies round_id's role or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb (decide) and resource (held answers), and defines both enum outcomes inline: 'publish shares with peers; private keeps between boss and seat.' This differentiates it clearly from the other lifecycle siblings (run_round, wait, handover).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete decision-point rules: repeating a decision is idempotent, changing it is rejected, and 'running/review requires wait' explicitly routes the agent to the wait sibling when work remains. It does not enumerate every alternative (e.g. cancel/handover) but leaves little ambiguity about when to call this versus waiting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
handoverHand a workspace over to another bossA
Transfer all tasks/meetings of a chat only on user request; no arguments lists waiting workspaces. release=true hands off; workspace_id claims and refuses the previous boss. Claiming your own waiting workspace withdraws it. Running work finishes on the old server; continue when writable=true. Private: never send to seats. Follow the agentnave-handover Skill.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | With release: absolute working directory; required when this chat has no saved conversations. | |
| note | No | With release: next steps and references for the next boss; saved in the App, so exclude secrets and sensitive personal data. | |
| title | No | With release: workspace name; required only when this chat has no saved conversations. | |
| release | No | Mark this chat workspace as waiting for takeover. | |
| workspace_id | No | Claim a waiting workspace listed by handover(). | |
| manager_session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, disclosing that claiming refuses the previous boss (an access revocation side effect), that claiming your own waiting workspace withdraws it, that running work continues on the old server, and a privacy constraint ('never send to seats'). These are real behavioral traits the agent can't otherwise know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and every clause carries information, but the description is a densely semicolon-chained block with abrupt fragments ('Private: never send to seats') that are hard to parse on a first read. It could be restructured into clear sentences without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and annotations cover the safety profile and the return value (writable), and the description explains the two modes and their conditions. Missing are error cases and what exactly 'no arguments' returns, which would help for a dual-purpose tool with 6 optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the schema already documents cwd, note, title, release, and workspace_id. The description adds mode interactions (no arguments lists waiting workspaces; release vs. workspace_id semantics; claiming your own workspace withdraws it) that the field-level descriptions don't fully cover.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Transfer all tasks/meetings of a chat') and reveals the tool's dual modes (release a workspace vs. claim a waiting one). It's a bit dense and chained together, but an agent can tell what the tool does. No sibling differentiation is needed since no other tool overlaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'only on user request' gives a clear required condition, 'release=true hands off; workspace_id claims' gives mode selection, and 'Continue when writable=true' gives a follow-up condition. It doesn't name alternatives (none exist among siblings) or exclusions, but the when-and-how is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listList handles and saved conversationsCRead-onlyIdempotent
List invocation metadata and saved conversations, newest first; open a read-only dashboard. writable=false: continue at the owning server or when idle. Private: never send to seats.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only meetings or only task conversations. | |
| limit | No | Most recent conversations; defaults to 10, at most 200. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| invocations | Yes | |
| unavailable | Yes | |
| conversations | Yes | |
| dashboard_url | No | |
| dashboard_error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so "writable=false" mostly restates structured data. The description does add two useful behavioral facts: results are ordered newest-first, and the data is private and must not be sent to seats. However, "open a read-only dashboard" is left unexplained, leaving ambiguity about whether a side effect occurs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the listing purpose, but the remaining sentences are cryptic fragments ("continue at the owning server or when idle") that read as leaked internal notes rather than agent-facing guidance. Those lines consume space without conveying actionable meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description still leaves core questions open for a zero-required-parameter listing tool: what "invocation metadata" contains, whether the dashboard clause is an action, and how results differ when kind is set. Given the ambiguity, the description is not sufficient to call the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so kind (meetings vs task conversations) and limit (1-200, default 10) are fully documented in the schema. The description adds nothing about either parameter, only the ordering. Baseline 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It does state a specific verb and resource ("List invocation metadata and saved conversations, newest first"), which is enough to distinguish it from read_conversation. But the second clause, "open a read-only dashboard," introduces a second, unexplained capability, and the title's "handles" never matches the description's "invocation metadata." The agent cannot tell exactly what one call returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is fragmentary jargon: "writable=false: continue at the owning server or when idle" and "Private: never send to seats." Neither tells the agent when to pick list over siblings like list_members or read_conversation. No exclusion or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_membersRead configured membersBRead-onlyIdempotent
Read App members, defaults, review/orchestration seats and mode limits afresh. members merges provider/model rows: omitted modes means all modes, [] means none; default is true or a list of default modes. error checks Adapter options, not installation, authentication or model availability; repair invalid files in App. Missing members leave modes unrestricted; disabled orchestration supplies no defaults. Omitted available means usable; unavailable seats may offer replacement parameters: pass with original seat/role; switching is never automatic. Native seats/exclusions: see MCP instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | Also return this CLI's permitted status and supported options. |
Output Schema
| Name | Required | Description |
|---|---|---|
| host | No | |
| error | No | |
| review | No | |
| members | Yes | |
| configured | Yes | |
| restricted | No | |
| cli_options | No | |
| host_source | Yes | |
| permissions | No | |
| review_error | No | |
| orchestration | No | |
| provider_details | No | |
| cli_options_error | No | |
| permissions_error | No | |
| orchestration_error | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read-only, idempotent operation. The description adds substantial behavioral context beyond that: merging provider/model rows, omitted-vs-empty modes semantics, default handling, error scope, and seat replacement behavior. Some phrasing is terse, but it materially informs behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, but the remainder is a dense semicolon-separated block covering many edge cases. It is adequately sized for a configuration-reading tool, yet the structure makes it harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and full annotation coverage, so the description need not explain return values or safety. It covers most behavioral caveats for defaults, modes, availability, and replacements, though it could more clearly frame when the tool should be selected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'provider' parameter is already documented in the schema. The description mentions provider/model rows and seat/options behavior but does not add meaning specifically about the 'provider' argument beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Read', and names the resources: App members, defaults, review/orchestration seats, and mode limits. This distinguishes it from mutation siblings, though it does not explicitly contrast it with the generic 'list' sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like 'list' or 'read_conversation'. The description explains conditional behaviors once called, but not the selection criteria for calling it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_conversationRead a saved conversationBRead-onlyIdempotent
Read saved final messages/tasks, including native session_ids and forwardable message_ids. Meeting id equals group_id; pending_answer marks answers awaiting review. Private: never forward the whole result to seats.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Most recent messages/tasks to return; omit for all remaining. | |
| since_round | No | Meetings: include messages from this round onward; 0 includes initial host remarks. | |
| conversation_id | Yes | ||
| include_private | No | Meetings: also each seat's private instructions and the answers kept private. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond them: the result is private and must not be forwarded wholesale to seats, and it explains that pending_answer marks answers awaiting review. This is exactly the kind of extra operational caveat annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded lines: purpose first, then identifiers, then the privacy caveat. Efficient overall, though 'Private: never forward the whole result to seats' is telegraphic and assumes the reader knows what 'seats' are.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is rightly omitted, and annotations cover safety. However, the description introduces domain terms ('seats', 'meetings', 'group_id', 'pending_answer') without defining them, and never explains what happens when conversation_id does not refer to a meeting, leaving an agent to infer the mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with limit, since_round and include_private already well documented in the schema, so the baseline of 3 applies. The description does add clarifying semantics for conversation_id ('Meeting id equals group_id'), which is the one undocumented parameter, but it says nothing about the effect of limit or since_round beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read saved final messages/tasks', and adds what the payload contains (native session_ids, forwardable message_ids). It is clearly distinguishable from the write/orchestration siblings (start_agent, run_round, decide_answers), though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to call this versus siblings like `list` or `wait`. The only directive is a downstream handling rule ('never forward the whole result to seats'), which constrains use of the output but does not help select the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_roundRun a meeting roundADestructive
Create/continue a saved meeting; group_id equals conversation_id. Seats keep native sessions across rounds/restarts and automatically share committed entries. New: title/members required; add prompt/seats to run round 1, omit prompt to only create. Existing: omit creation-only arguments. One active round per meeting; wait on round_id. entries contains committed message_ids; unreceived flags ends/blockers/reviews for wait. At meeting close, post the summary you give the user as a prompt with no seats.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | New meeting only: absolute directory seats run in; ignored when isolated. | |
| order | No | parallel: answers hidden from peers this round; serial: later seats see earlier answers. | parallel |
| seats | No | Ordered seat ids to answer once; empty posts a remark. | |
| title | No | New meeting title: at most 48 columns (CJK=2); the first also names this workspace. | |
| prompt | No | Shared task; no seats posts a public remark without starting a round; omit only to create. | |
| review | No | New meeting only: hold each answer until decide_answers decides it. | |
| forward | No | Message_ids to commit before this task; requires seats; see MCP instructions. | |
| members | No | New meeting only: its 2–7 seats. | |
| group_id | No | Meeting to continue; omit to open a new meeting from title and members. | |
| isolated | No | New meeting only: each seat gets its own empty directory and restricted_tools; seat options may only set model and effort (and Pi's provider). | |
| retry_seats | No | Failed/blocked seats to restart with the same input in a still-running parallel round; pass only with group_id. After it ends, use a new round. | |
| instructions | No | Optional private instruction per seat id; never sent to other seats. | |
| manager_model | No | ||
| manager_session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| round | No | |
| entries | No | |
| members | No | |
| group_id | Yes | |
| warnings | No | |
| unreceived | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/open-world annotations, the description discloses important behavior: seats keep native sessions across rounds/restarts, committed entries are automatically shared, only one round is active per meeting, and round output includes unreceived ends/blockers/reviews for wait. It does not fully describe failure modes or the exact persistence/destructive effects, but adds substantial context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core create/continue meeting behavior, with New/Existing branches that make it scannable. It is occasionally telegraphic, especially around entries and unreceived flags, but every sentence carries relevant operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters, high schema coverage, existing annotations, and an output schema, the description supplies enough workflow context to call the tool correctly for new and existing meetings. It covers round behavior and close-out summary posting, though a little more clarity on round lifecycle and output interpretation would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 86% schema description coverage, the schema already documents most parameters; the description still adds key semantics such as group_id equaling conversation_id and new-vs-existing requirements for title, members, prompt, and seats. It does not explain several parameters like order, review, forward, isolated, retry_seats, or instructions, but those are covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates or continues a saved meeting and introduces the group_id/conversation_id equivalence, so the verb and resource are identifiable. It does not explicitly distinguish itself from sibling tools such as start_agent, wait, or decide_answers, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit branching guidance: new meetings require title/members, prompt/seats run round 1, omitting prompt only creates, and existing meetings should omit creation-only arguments. It also notes the one-active-round constraint and waiting on round_id, but does not name alternatives like wait or decide_answers as distinct tool choices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_agentRun a task with a local AI CLIADestructive
Start a private CLI task; invocation_id goes to wait, not session_id. No deadline or messages to active tasks; cancel to stop. Reply settings are requested, not effective; unreceived flags undelivered ends/blockers/reviews for wait.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Existing absolute directory; required for new tasks, inherited on resume when omitted. | |
| role | No | Desk label: 1–40 trimmed characters, no controls/newlines; blank clears. Review roles select CLI if omitted and App defaults if CLI matches; explicit options win. | |
| seat | No | App Explorer/Worker difficulty: selects CLI if omitted, defaults if CLI matches and orchestration enabled; explicit options win; inherits on resume. Not shown; also pass role as the desk label. | |
| title | No | New title: at most 48 columns (CJK=2). The first permanently names this workspace, so state the chat's purpose; later tasks may omit it. | |
| access | No | Declared read/write access; see MCP instructions. | |
| prompt | Yes | Task, context, constraints and expected output; this chat is not inherited. | |
| forward | No | Message_ids to inject before this task; see MCP instructions. | |
| provider | No | CLI name; omit to inherit session history or the App seat; see MCP instructions for exclusions and native seats. | |
| session_id | No | Native session_id from a finished task, never invocation_id; omit for a new thread. Resume inherits provider/cwd/role/seat; explicit values win. Unknown or ambiguous history needs provider and cwd; a new role without seat drops the old seat. | |
| manager_model | No | ||
| conversation_id | No | Private task conversation to append to. | |
| provider_options | No | CLI options, including model/effort; keys via list_members(provider=...); defaults in MCP instructions. | |
| manager_session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | |
| model | No | |
| access | No | |
| effort | No | |
| output | No | |
| reason | Yes | |
| status | Yes | |
| activity | No | |
| provider | No | |
| warnings | No | |
| elapsed_ms | No | |
| message_id | No | |
| session_id | No | |
| unreceived | No | |
| invocation_id | Yes | |
| output_age_ms | No | |
| conversation_id | Yes | |
| defaults_applied | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, openWorld=true and non-idempotent, so the safety profile is covered. The description adds genuinely non-derivable behavior: reply settings are requested rather than effective, and undelivered ends/blockers/reviews must be picked up through wait. The asynchronous model is conveyed, though the phrasing is dense enough that a first-time agent may need to re-read it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
There is no filler, but the four clipped clauses are not front-loaded around a single clear statement of what the call does, and phrases like 'unreceived flags undelivered ends/blockers/reviews for wait' are close to unparseable on first read. Brevity here costs comprehension rather than buying it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and 85% parameter coverage fills most of the rest. But for a 13-parameter, destructive, open-world tool the description says nothing about what the returned invocation_id is for beyond routing it to wait, what failure looks like, or the distinction between a new task and a resumed thread.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 85%, so the schema already documents cwd, role, seat, title, provider, session_id and provider_options in detail. The description's only parameter-adjacent content is the invocation_id-vs-session_id warning, which the session_id schema field already states verbatim ('never invocation_id'). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause 'Start a private CLI task' gives a concrete verb and resource, and the follow-up ('invocation_id goes to wait') distinguishes this from the wait/cancel siblings. However, 'private CLI task' is internal jargon that an agent must infer means spawning a background agent process; the title carries more of the explanation than the description does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the adjacent tools and the conditions that select them: results go to wait, stopping goes to cancel, and 'no deadline or messages to active tasks' states an exclusion. There is no guidance on when to start a new task versus resuming via session_id or using run_round, which leaves the main sibling-routing decision unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waitWait for tasks or roundsARead-onlyIdempotent
Return when any handle is ready; reason=ready contains all ready now in updates (tasks) and rounds, not necessarily all finished.
Ready: terminal; execution_blocked (still running; once/category); review_needed (pending_review needs decide_answers); seat_lost (failed/blocked seat while peers run; once/seat, answers withheld; retry via run_round.retry_seats). pending_ids lists unreceived ends for the given ids or inbox; all_finished means none remain. Handle blockers/reviews, then wait on pending_ids until all_finished; drop delivered handles. Ends are never pushed: wait after dispatch or independent work; collect every terminal result before ending your turn. wait_elapsed gives status/activity; wait again normally. Only wait_seconds=0 adds running tails (up to 1000 characters) and age, subject to include_output. Round answers arrive once; output_returned means reread with read_conversation. Unknown/expired/duplicate ids reject the whole call. Inbox ends arrive once; reviews stay ready until decided; nothing_pending means an empty inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | No | Distinct invocation_ids/round_ids; omit for this server inbox of unreceived tasks and rounds. | |
| wait_seconds | No | Omit to wait up to 240s; 0 checks progress immediately and includes running tails; ready results are still received; neither value stops work. | |
| include_output | No | false omits reply bodies and tails, including answers under review. | |
| manager_session_id | No | Inbox chat filter when ids is omitted; ignored with ids; identity rules in MCP instructions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| reason | Yes | |
| rounds | Yes | |
| updates | Yes | |
| pending_ids | Yes | |
| all_finished | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: up-to-240s blocking without stopping work, one-shot delivery of results and inbox ends, reviews staying ready until decided, and whole-call rejection on unknown/expired/duplicate ids. This is the kind of operational context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense, run-on and jargon-heavy: 'handle', 'ends', 'tails' and 'once/seat' are used before being explained, forcing re-reads. The content largely earns its place, but the structure is a wall of clauses rather than front-loaded statements, which hurts scanability for a tool that will be called frequently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateful blocking tool with an output schema, the description covers the state machine, delivery-once semantics, error rejection and post-call workflow. Remaining gaps are terminological (undefined 'handle'/'ends') rather than missing operational facts an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a little beyond the schema — the 1000-character tail cap, that age accompanies running tails, and that ready results are still received with wait_seconds=0 — but most parameter meaning is already in the schema fields themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and object ('Return when any handle is ready') and enumerates the ready-state outcomes (terminal, execution_blocked, review_needed, seat_lost), which tells an agent this is a blocking poll rather than a fetch. It is distinguishable from read_conversation and decide_answers, though the core noun 'handle' is never defined, leaving a small ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing: 'Handle blockers/reviews, then wait on pending_ids until all_finished; drop delivered handles' and 'Ends are never pushed: wait after dispatch or independent work.' It also routes elsewhere where appropriate ('retry via run_round.retry_seats', 'read_conversation', 'decide_answers'). No explicit negative case naming a sibling tool to use instead of wait, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.65.0- Changed
cancel1 field changed- changed
Output schema / $defs / InvocationPayload / requiredPrevious value: -[ - "invocation_id", - "status", - "reason", - "elapsed_ms" -]New value: +[ + "invocation_id", + "status", + "reason" +]
- Changed
handover6 fields changed- changed
Input schema / $defs / ManagerSessionId / descriptionPrevious value: -"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round, and by handover to hand over or take over, unless AGENTNAVE_HOST_SESSION_ID is injected for this chat or the host gives this server its native session ID (Claude Code: CLAUDE_CODE_SESSION_ID)."New value: +"Boss chat ID from host context; see MCP instructions." - added
Input schema / properties / cwdAdded value: +{ + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "With release: absolute working directory; required when this chat has no saved conversations.", + "title": "Cwd" +} - changed
Input schema / properties / note / descriptionPrevious value: -"With release: notes for the next boss, written for what it must do next. Say why you hand over (out of quota, a model better suited to the work), the goal, what is done, decisions and why, what is open, desks in use, and the Skills to load (agentnave-manager, any review gate): it may come from another host. Name the conversations to read first and any worktree or uncommitted work needed to continue. Cite what already exists by reference only (conversation ids, PR or commit links, ADR or spec paths); the next boss reads seat answers with read_conversation, so keep this shorter than the records it points to. No keys, passwords or sensitive personal data: it is saved and shown in the App."New value: +"With release: next steps and references for the next boss; saved in the App, so exclude secrets and sensitive personal data." - changed
Input schema / properties / release / descriptionPrevious value: -"Mark this boss chat's whole workspace as waiting for another boss chat to take over."New value: +"Mark this chat workspace as waiting for takeover." - added
Input schema / properties / titleAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "With release: workspace name; required only when this chat has no saved conversations.", + "title": "Title" +} - changed
Input schema / properties / workspace_id / descriptionPrevious value: -"Take this waiting workspace over (from a call without arguments)."New value: +"Claim a waiting workspace listed by handover()."
- Changed
list2 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -20New value: +10 - changed
Input schema / properties / limit / descriptionPrevious value: -"Most recent conversations."New value: +"Most recent conversations; defaults to 10, at most 200."
- Changed
list_members20 fields changed- added
Output schema / $defs / ListedMemberAdded value: +{ + "additionalProperties": false, + "properties": { + "default": { + "anyOf": [ + { + "const": true, + "type": "boolean" + }, + { + "items": { + "$ref": "#/$defs/Mode" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Default" + }, + "effort": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Effort" + }, + "efforts": { + "items": { + "type": "string" + }, + "title": "Efforts", + "type": "array" + }, + "error": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Error" + }, + "model": { + "default": "", + "title": "Model", + "type": "string" + }, + "modes": { + "anyOf": [ + { + "items": { + "$ref": "#/$defs/Mode" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Modes" + }, + "notes": { + "default": "", + "title": "Notes", + "type": "string" + }, + "options": { + "additionalProperties": { + "$ref": "#/$defs/ProviderOption" + }, + "title": "Options", + "type": "object" + }, + "provider": { + "$ref": "#/$defs/ProviderName" + } + }, + "required": [ + "provider" + ], + "title": "ListedMember", + "type": "object" +} - removed
Output schema / $defs / MemberStatusRemoved value: -{ - "additionalProperties": false, - "properties": { - "default": { - "title": "Default", - "type": "boolean" - }, - "effort": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Effort" - }, - "efforts": { - "items": { - "type": "string" - }, - "title": "Efforts", - "type": "array" - }, - "error": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Error" - }, - "model": { - "title": "Model", - "type": "string" - }, - "notes": { - "title": "Notes", - "type": "string" - }, - "options": { - "additionalProperties": { - "$ref": "#/$defs/ProviderOption" - }, - "title": "Options", - "type": "object" - }, - "permitted": { - "title": "Permitted", - "type": "boolean" - }, - "provider": { - "$ref": "#/$defs/ProviderName" - }, - "valid": { - "title": "Valid", - "type": "boolean" - } - }, - "required": [ - "provider", - "model", - "default", - "efforts", - "effort", - "options", - "notes", - "permitted", - "valid", - "error" - ], - "title": "MemberStatus", - "type": "object" -} - removed
Output schema / $defs / ModeStatusRemoved value: -{ - "additionalProperties": false, - "properties": { - "members": { - "items": { - "$ref": "#/$defs/MemberStatus" - }, - "title": "Members", - "type": "array" - }, - "restricted": { - "title": "Restricted", - "type": "boolean" - } - }, - "required": [ - "restricted", - "members" - ], - "title": "ModeStatus", - "type": "object" -} - added
Output schema / $defs / OrchestrationStatus / properties / enabledAdded value: +{ + "default": false, + "title": "Enabled", + "type": "boolean" +} - added
Output schema / $defs / ReviewSeatStatus / properties / available / anyOfAdded value: +[ + { + "const": false, + "type": "boolean" + }, + { + "type": "null" + } +] - added
Output schema / $defs / ReviewSeatStatus / properties / available / defaultAdded value: +null - removed
Output schema / $defs / ReviewSeatStatus / properties / available / typeRemoved value: -"boolean" - added
Output schema / $defs / ReviewSeatStatus / properties / effort / defaultAdded value: +null - added
Output schema / $defs / ReviewSeatStatus / properties / native / anyOfAdded value: +[ + { + "const": true, + "type": "boolean" + }, + { + "type": "null" + } +] - changed
Output schema / $defs / ReviewSeatStatus / properties / native / defaultPrevious value: -falseNew value: +null - removed
Output schema / $defs / ReviewSeatStatus / properties / native / typeRemoved value: -"boolean" - added
Output schema / $defs / ReviewSeatStatus / properties / reason / defaultAdded value: +null - added
Output schema / $defs / ReviewSeatStatus / properties / replacementAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/SeatReplacement" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / $defs / ReviewSeatStatus / requiredPrevious value: -[ - "provider", - "model", - "effort", - "available", - "reason", - "alternatives" -]New value: +[ + "provider", + "model" +] - added
Output schema / $defs / SeatReplacementAdded value: +{ + "additionalProperties": false, + "properties": { + "provider": { + "$ref": "#/$defs/ProviderName" + }, + "provider_options": { + "additionalProperties": { + "$ref": "#/$defs/ProviderOption" + }, + "title": "Provider Options", + "type": "object" + }, + "reason": { + "title": "Reason", + "type": "string" + } + }, + "required": [ + "provider", + "reason" + ], + "title": "SeatReplacement", + "type": "object" +} - added
Output schema / properties / host / defaultAdded value: +null - added
Output schema / properties / membersAdded value: +{ + "items": { + "$ref": "#/$defs/ListedMember" + }, + "title": "Members", + "type": "array" +} - removed
Output schema / properties / modesRemoved value: -{ - "additionalProperties": { - "$ref": "#/$defs/ModeStatus" - }, - "propertyNames": { - "$ref": "#/$defs/Mode" - }, - "title": "Modes", - "type": "object" -} - added
Output schema / properties / restrictedAdded value: +{ + "items": { + "$ref": "#/$defs/Mode" + }, + "title": "Restricted", + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "configured", - "host", - "host_source", - "modes" -]New value: +[ + "configured", + "host_source", + "members" +]
- Changed
read_conversation2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"At most this many of the most recent messages or tasks; omitted counts the rest."New value: +"Most recent messages/tasks to return; omit for all remaining." - changed
Input schema / properties / since_round / descriptionPrevious value: -"Meetings: only messages from this round on; 0 includes host remarks posted before the first round."New value: +"Meetings: include messages from this round onward; 0 includes initial host remarks."
- Changed
run_round13 fields changed- changed
Input schema / $defs / GroupSeatSpec / properties / access / descriptionPrevious value: -"Declared desk access: read for exploring, planning or reviewing, write for changing files. Recorded and shown only; it never changes the CLI's native permissions."New value: +"Declared read/write access; see MCP instructions." - changed
Input schema / $defs / GroupSeatSpec / properties / provider_options / descriptionPrevious value: -"Options for this seat's CLI, e.g. {\"model\": \"gpt-6.1-sol\", \"effort\": \"medium\"}; omitted keys use discussion member defaults."New value: +"CLI options; omitted keys use discussion member defaults." - changed
Input schema / $defs / GroupSeatSpec / properties / role / descriptionPrevious value: -"Optional desk role for this seat; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no role."New value: +"Desk label: 1–40 trimmed characters, no controls/newlines; blank/omitted means none." - changed
Input schema / $defs / ManagerModel / descriptionPrevious value: -"Your current manager model ID, when known from trusted host context. Metadata for this message only; never the subagent model or a CLI-derived guess. Omit when unknown. Does not change provider settings."New value: +"Boss model override; normally omit; see MCP instructions." - changed
Input schema / $defs / ManagerSessionId / descriptionPrevious value: -"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round, and by handover to hand over or take over, unless AGENTNAVE_HOST_SESSION_ID is injected for this chat or the host gives this server its native session ID (Claude Code: CLAUDE_CODE_SESSION_ID)."New value: +"Boss chat ID from host context; see MCP instructions." - changed
Input schema / properties / forward / descriptionPrevious value: -"Message ids from wait, run_round, decide_answers or read_conversation to add as committed forward entries before this round's task, in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. Seats receive them as data, not instructions."New value: +"Message_ids to commit before this task; requires seats; see MCP instructions." - changed
Input schema / properties / order / descriptionPrevious value: -"parallel: all start together and cannot see each other's answer this round. serial: one by one in list order; later seats see earlier answers."New value: +"parallel: answers hidden from peers this round; serial: later seats see earlier answers." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Shared task for this round, visible to all seats; without seats, a public host remark every seat receives with its next round. To get answers, include seats even when opening a new meeting. Omit to only create the meeting."New value: +"Shared task; no seats posts a public remark without starting a round; omit only to create." - changed
Input schema / properties / retry_seats / descriptionPrevious value: -"Failed or blocked seats of this meeting's running parallel round to start again: same input, still blind to other answers, and the answer joins this round. Pass only with group_id. Once the round ended, name them in a new round (they then see its answers)."New value: +"Failed/blocked seats to restart with the same input in a still-running parallel round; pass only with group_id. After it ends, use a new round." - changed
Input schema / properties / seats / descriptionPrevious value: -"Ordered seat ids that each answer once. Include with title, members and prompt to open a meeting and run round 1 in one call. Empty only posts a host remark."New value: +"Ordered seat ids to answer once; empty posts a remark." - changed
Input schema / properties / title / descriptionPrevious value: -"New meeting only: its short title, at most 48 columns (CJK characters count 2). If it is the manager chat's first conversation, it also names the workspace."New value: +"New meeting title: at most 48 columns (CJK=2); the first also names this workspace." - changed
Output schema / $defs / GroupSeatPayload / requiredPrevious value: -[ - "id", - "provider", - "cwd", - "model", - "effort", - "role", - "access", - "defaults_applied" -]New value: +[ + "id", + "provider", + "cwd" +] - added
Output schema / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
start_agent23 fields changed- changed
Input schema / $defs / ManagerModel / descriptionPrevious value: -"Your current manager model ID, when known from trusted host context. Metadata for this message only; never the subagent model or a CLI-derived guess. Omit when unknown. Does not change provider settings."New value: +"Boss model override; normally omit; see MCP instructions." - changed
Input schema / $defs / ManagerSessionId / descriptionPrevious value: -"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round, and by handover to hand over or take over, unless AGENTNAVE_HOST_SESSION_ID is injected for this chat or the host gives this server its native session ID (Claude Code: CLAUDE_CODE_SESSION_ID)."New value: +"Boss chat ID from host context; see MCP instructions." - added
Input schema / $defs / OrchestrationRoleAdded value: +{ + "enum": [ + "explorer-easy", + "explorer-hard", + "worker-easy", + "worker-hard" + ], + "type": "string" +} - changed
Input schema / properties / access / descriptionPrevious value: -"Declared desk access: read for exploring, planning or reviewing, write for changing files. Recorded and shown only; it never changes the CLI's native permissions."New value: +"Declared read/write access; see MCP instructions." - changed
Input schema / properties / conversation_id / descriptionPrevious value: -"Task conversation to add this task to."New value: +"Private task conversation to append to." - added
Input schema / properties / cwd / anyOfAdded value: +[ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / cwd / defaultAdded value: +null - changed
Input schema / properties / cwd / descriptionPrevious value: -"Absolute existing directory where the subagent runs."New value: +"Existing absolute directory; required for new tasks, inherited on resume when omitted." - removed
Input schema / properties / cwd / minLengthRemoved value: -1 - removed
Input schema / properties / cwd / typeRemoved value: -"string" - changed
Input schema / properties / forward / descriptionPrevious value: -"Message ids from wait, run_round, decide_answers or read_conversation to inject before the prompt in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. The injected text is labelled as data, not instructions, and the saved task prompt stays your original text."New value: +"Message_ids to inject before this task; see MCP instructions." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Complete task, context, constraints, and expected output; the CLI does not inherit this conversation."New value: +"Task, context, constraints and expected output; this chat is not inherited." - removed
Input schema / properties / provider / $refRemoved value: -"#/$defs/ProviderName" - added
Input schema / properties / provider / anyOfAdded value: +[ + { + "$ref": "#/$defs/ProviderName" + }, + { + "type": "null" + } +] - added
Input schema / properties / provider / defaultAdded value: +null - changed
Input schema / properties / provider / descriptionPrevious value: -"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, deepseek, grok, pi, zcode. Excluded providers: none. start_agent rejects excluded providers; meetings follow discussion member limits without host exclusions."New value: +"CLI name; omit to inherit session history or the App seat; see MCP instructions for exclusions and native seats." - changed
Input schema / properties / provider_options / descriptionPrevious value: -"Explicit options for the selected CLI, e.g. {\"model\": \"gpt-6.1-sol\", \"effort\": \"medium\"}; model is this CLI's own model ID as list_members shows it. Call list_members(provider=...) for supported keys. Omitted options use configured App defaults, then native CLI settings."New value: +"CLI options, including model/effort; keys via list_members(provider=...); defaults in MCP instructions." - changed
Input schema / properties / role / descriptionPrevious value: -"Optional label shown on this task's desk; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no label. Each native thread is its own desk, whatever its role. An agentnave-review role (e.g. correctness-reviewer) or explorer-easy, explorer-hard, worker-easy, worker-hard also brings the model and effort the user picked for that seat in the App when provider is the seat's CLI; explicit options win, and defaults_applied names the seat."New value: +"Desk label: 1–40 trimmed characters, no controls/newlines; blank clears. Review roles select CLI if omitted and App defaults if CLI matches; explicit options win." - added
Input schema / properties / seatAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/OrchestrationRole" + }, + { + "type": "null" + } + ], + "default": null, + "description": "App Explorer/Worker difficulty: selects CLI if omitted, defaults if CLI matches and orchestration enabled; explicit options win; inherits on resume. Not shown; also pass role as the desk label." +} - changed
Input schema / properties / session_id / descriptionPrevious value: -"To continue a specific native conversation, use the session_id returned by a finished invocation of the same provider; never use an invocation_id here. Omitted, the task starts a new native thread: a new desk in the App."New value: +"Native session_id from a finished task, never invocation_id; omit for a new thread. Resume inherits provider/cwd/role/seat; explicit values win. Unknown or ambiguous history needs provider and cwd; a new role without seat drops the old seat." - changed
Input schema / properties / title / descriptionPrevious value: -"Short title for a new task conversation, at most 48 columns (CJK characters count 2). The first conversation of a manager chat also names its workspace for good, so give that one the chat's purpose; later private tasks may omit it."New value: +"New title: at most 48 columns (CJK=2). The first permanently names this workspace, so state the chat's purpose; later tasks may omit it." - changed
Input schema / requiredPrevious value: -[ - "provider", - "prompt", - "cwd" -]New value: +[ + "prompt" +] - changed
Output schema / requiredPrevious value: -[ - "invocation_id", - "status", - "reason", - "elapsed_ms", - "conversation_id", - "access" -]New value: +[ + "invocation_id", + "status", + "reason", + "conversation_id" +]
- Changed
wait7 fields changed- changed
Input schema / properties / ids / descriptionPrevious value: -"Distinct invocation_ids from start_agent and round_ids from run_round. Omit to wait on the inbox: every task and round of this server whose end you have not received yet."New value: +"Distinct invocation_ids/round_ids; omit for this server inbox of unreceived tasks and rounds." - changed
Input schema / properties / manager_session_id / descriptionPrevious value: -"With ids omitted, only this boss chat's tasks and rounds; same value as start_agent and run_round. Ignored with ids."New value: +"Inbox chat filter when ids is omitted; ignored with ids; identity rules in MCP instructions." - changed
Input schema / properties / wait_seconds / descriptionPrevious value: -"Omit for normal waiting (up to 240 seconds). Only 0 and 240 are accepted. Use 0 for a specific progress or intervention check: it returns at once and may include running reply tails. Ready results are still received normally. Never stops the work."New value: +"Omit to wait up to 240s; 0 checks progress immediately and includes running tails; ready results are still received; neither value stops work." - changed
Output schema / $defs / InvocationPayload / requiredPrevious value: -[ - "invocation_id", - "status", - "reason", - "elapsed_ms" -]New value: +[ + "invocation_id", + "status", + "reason" +] - added
Output schema / properties / all_finishedAdded value: +{ + "title": "All Finished", + "type": "boolean" +} - added
Output schema / properties / pending_idsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Pending Ids", + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "reason", - "updates", - "rounds" -]New value: +[ + "reason", + "pending_ids", + "all_finished", + "updates", + "rounds" +]
5 tool updates
v0.58.0- Changed
handover1 field changed- changed
Input schema / properties / note / descriptionPrevious value: -"With release: notes for the next boss, written for what it must do next. Say why you hand over (out of quota, a model better suited to the work), the goal, what is done, decisions and why, what is open, desks in use, and the Skills to load (agentnave-manager, any review gate): it may come from another host. Cite what already exists by reference only (conversation ids, PR or commit links, ADR or spec paths); the next boss reads seat answers with read_conversation, so keep this shorter than the records it points to. No keys, passwords or sensitive personal data: it is saved and shown in the App."New value: +"With release: notes for the next boss, written for what it must do next. Say why you hand over (out of quota, a model better suited to the work), the goal, what is done, decisions and why, what is open, desks in use, and the Skills to load (agentnave-manager, any review gate): it may come from another host. Name the conversations to read first and any worktree or uncommitted work needed to continue. Cite what already exists by reference only (conversation ids, PR or commit links, ADR or spec paths); the next boss reads seat answers with read_conversation, so keep this shorter than the records it points to. No keys, passwords or sensitive personal data: it is saved and shown in the App."
- Changed
list_members5 fields changed- added
Output schema / $defs / DifficultyAdded value: +{ + "enum": [ + "easy", + "hard" + ], + "type": "string" +} - added
Output schema / $defs / OrchestrationStatusAdded value: +{ + "additionalProperties": false, + "properties": { + "explorer": { + "additionalProperties": { + "$ref": "#/$defs/ReviewSeatStatus" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/Difficulty" + }, + "title": "Explorer", + "type": "object" + }, + "worker": { + "additionalProperties": { + "$ref": "#/$defs/ReviewSeatStatus" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/Difficulty" + }, + "title": "Worker", + "type": "object" + } + }, + "title": "OrchestrationStatus", + "type": "object" +} - added
Output schema / $defs / ReviewSeatStatus / properties / nativeAdded value: +{ + "default": false, + "title": "Native", + "type": "boolean" +} - added
Output schema / properties / orchestrationAdded value: +{ + "$ref": "#/$defs/OrchestrationStatus" +} - added
Output schema / properties / orchestration_errorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Orchestration Error" +}
- Changed
run_round3 fields changed- changed
Input schema / properties / prompt / descriptionPrevious value: -"Shared task for this round, visible to all seats; without seats, a public host remark every seat receives with its next round. Omit only to open a new meeting without posting anything."New value: +"Shared task for this round, visible to all seats; without seats, a public host remark every seat receives with its next round. To get answers, include seats even when opening a new meeting. Omit to only create the meeting." - added
Input schema / properties / retry_seatsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Failed or blocked seats of this meeting's running parallel round to start again: same input, still blind to other answers, and the answer joins this round. Pass only with group_id. Once the round ended, name them in a new round (they then see its answers).", + "title": "Retry Seats" +} - changed
Input schema / properties / seats / descriptionPrevious value: -"Ordered seat ids that each answer once; empty posts prompt as a host remark."New value: +"Ordered seat ids that each answer once. Include with title, members and prompt to open a meeting and run round 1 in one call. Empty only posts a host remark."
- Changed
start_agent1 field changed- changed
Input schema / properties / role / descriptionPrevious value: -"Optional label shown on this task's desk; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no label. Each native thread is its own desk, whatever its role."New value: +"Optional label shown on this task's desk; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no label. Each native thread is its own desk, whatever its role. An agentnave-review role (e.g. correctness-reviewer) or explorer-easy, explorer-hard, worker-easy, worker-hard also brings the model and effort the user picked for that seat in the App when provider is the seat's CLI; explicit options win, and defaults_applied names the seat."
- Changed
wait2 fields changed- changed
Input schema / properties / wait_seconds / anyOfPrevious value: -[ - { - "maximum": 300, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + 0, + 240 + ], + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / wait_seconds / descriptionPrevious value: -"Longest wait in seconds, 300 when omitted; 0 returns at once, with the ready handles or a running snapshot of each. Never stops the work."New value: +"Omit for normal waiting (up to 240 seconds). Only 0 and 240 are accepted. Use 0 for a specific progress or intervention check: it returns at once and may include running reply tails. Ready results are still received normally. Never stops the work."
8 tool updates
v0.53.1- Changed
cancel3 fields changed- added
Output schema / $defs / InvocationPayload / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +} - added
Output schema / $defs / SeatRunPayload / properties / output_returnedAdded value: +{ + "title": "Output Returned", + "type": "boolean" +} - added
Output schema / $defs / SeatRunPayload / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Added
handover - Changed
list1 field changed- changed
Input schema / properties / kind / descriptionPrevious value: -"Only shows or only task conversations."New value: +"Only meetings or only task conversations."
- Changed
list_members8 fields changed- changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "deepseek", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi", + "zcode" +] - changed
Output schema / $defs / HostName / enumPrevious value: -[ - "codex", - "claude", - "codebuddy", - "workbuddy", - "grok", - "antigravity", - "pi", - "opencode", - "hermes" -]New value: +[ + "codex", + "claude", + "codebuddy", + "workbuddy", + "grok", + "antigravity", + "pi", + "deepseek", + "hermes", + "zcode" +] - added
Output schema / $defs / PermissionTierAdded value: +{ + "enum": [ + "auto", + "full" + ], + "type": "string" +} - changed
Output schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "deepseek", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi", + "zcode" +] - added
Output schema / properties / cli_optionsAdded value: +{ + "additionalProperties": { + "additionalProperties": { + "$ref": "#/$defs/ProviderOption" + }, + "type": "object" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/ProviderName" + }, + "title": "Cli Options", + "type": "object" +} - added
Output schema / properties / cli_options_errorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Cli Options Error" +} - added
Output schema / properties / permissionsAdded value: +{ + "additionalProperties": { + "$ref": "#/$defs/PermissionTier" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/ProviderName" + }, + "title": "Permissions", + "type": "object" +} - added
Output schema / properties / permissions_errorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Permissions Error" +}
- Changed
read_conversation2 fields changed- changed
Input schema / properties / include_private / descriptionPrevious value: -"Shows: also each seat's private instructions and the answers kept private."New value: +"Meetings: also each seat's private instructions and the answers kept private." - changed
Input schema / properties / since_round / descriptionPrevious value: -"Shows: only messages from this round on; 0 includes host remarks posted before the first round."New value: +"Meetings: only messages from this round on; 0 includes host remarks posted before the first round."
- Changed
run_round13 fields changed- changed
Input schema / $defs / ManagerSessionId / descriptionPrevious value: -"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round unless AGENTNAVE_HOST_SESSION_ID is injected for this chat."New value: +"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round, and by handover to hand over or take over, unless AGENTNAVE_HOST_SESSION_ID is injected for this chat or the host gives this server its native session ID (Claude Code: CLAUDE_CODE_SESSION_ID)." - changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "deepseek", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi", + "zcode" +] - changed
Input schema / properties / cwd / descriptionPrevious value: -"New show only: absolute directory seats run in; ignored when isolated."New value: +"New meeting only: absolute directory seats run in; ignored when isolated." - changed
Input schema / properties / group_id / descriptionPrevious value: -"Show to continue; omit to open a new show from title and members."New value: +"Meeting to continue; omit to open a new meeting from title and members." - changed
Input schema / properties / isolated / descriptionPrevious value: -"New show only: each seat gets its own empty directory and restricted_tools; seat options may only set model and effort (and Pi's provider)."New value: +"New meeting only: each seat gets its own empty directory and restricted_tools; seat options may only set model and effort (and Pi's provider)." - changed
Input schema / properties / members / descriptionPrevious value: -"New show only: its 2–7 seats."New value: +"New meeting only: its 2–7 seats." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Shared task for this round, visible to all seats; without seats, a public host remark every seat receives with its next round. Omit only to open a new show without posting anything."New value: +"Shared task for this round, visible to all seats; without seats, a public host remark every seat receives with its next round. Omit only to open a new meeting without posting anything." - changed
Input schema / properties / review / descriptionPrevious value: -"New show only: hold each answer until decide_answers decides it."New value: +"New meeting only: hold each answer until decide_answers decides it." - changed
Input schema / properties / title / descriptionPrevious value: -"New show only: its short title, at most 48 columns (CJK characters count 2). If it is the manager chat's first conversation, it also names the workspace."New value: +"New meeting only: its short title, at most 48 columns (CJK characters count 2). If it is the manager chat's first conversation, it also names the workspace." - added
Output schema / $defs / SeatRunPayload / properties / output_returnedAdded value: +{ + "title": "Output Returned", + "type": "boolean" +} - added
Output schema / $defs / SeatRunPayload / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +} - added
Output schema / $defs / UnreceivedPayloadAdded value: +{ + "properties": { + "error": { + "$ref": "#/$defs/InvocationErrorPayload" + }, + "id": { + "title": "Id", + "type": "string" + }, + "kind": { + "enum": [ + "task", + "round" + ], + "title": "Kind", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "id", + "kind", + "status" + ], + "title": "UnreceivedPayload", + "type": "object" +} - added
Output schema / properties / unreceivedAdded value: +{ + "items": { + "$ref": "#/$defs/UnreceivedPayload" + }, + "title": "Unreceived", + "type": "array" +}
- Changed
start_agent5 fields changed- changed
Input schema / $defs / ManagerSessionId / descriptionPrevious value: -"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round unless AGENTNAVE_HOST_SESSION_ID is injected for this chat."New value: +"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round, and by handover to hand over or take over, unless AGENTNAVE_HOST_SESSION_ID is injected for this chat or the host gives this server its native session ID (Claude Code: CLAUDE_CODE_SESSION_ID)." - changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "deepseek", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi", + "zcode" +] - changed
Input schema / properties / provider / descriptionPrevious value: -"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, deepseek, grok, pi. Excluded providers: none. start_agent rejects excluded providers; shows follow discussion member limits without host exclusions."New value: +"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, deepseek, grok, pi, zcode. Excluded providers: none. start_agent rejects excluded providers; meetings follow discussion member limits without host exclusions." - added
Output schema / $defs / UnreceivedPayloadAdded value: +{ + "properties": { + "error": { + "$ref": "#/$defs/InvocationErrorPayload" + }, + "id": { + "title": "Id", + "type": "string" + }, + "kind": { + "enum": [ + "task", + "round" + ], + "title": "Kind", + "type": "string" + }, + "status": { + "title": "Status", + "type": "string" + } + }, + "required": [ + "id", + "kind", + "status" + ], + "title": "UnreceivedPayload", + "type": "object" +} - added
Output schema / properties / unreceivedAdded value: +{ + "items": { + "$ref": "#/$defs/UnreceivedPayload" + }, + "title": "Unreceived", + "type": "array" +}
- Changed
wait3 fields changed- added
Output schema / $defs / InvocationPayload / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +} - added
Output schema / $defs / SeatRunPayload / properties / output_returnedAdded value: +{ + "title": "Output Returned", + "type": "boolean" +} - added
Output schema / $defs / SeatRunPayload / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
8 tool updates
v0.49.0- Changed
cancel1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
decide_answers1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_members6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $defs / HostName / enumPrevious value: -[ - "codex", - "claude", - "codebuddy", - "workbuddy", - "grok", - "antigravity", - "pi", - "gemini", - "opencode", - "hermes" -]New value: +[ + "codex", + "claude", + "codebuddy", + "workbuddy", + "grok", + "antigravity", + "pi", + "opencode", + "hermes" +] - added
Output schema / $defs / ReviewRoleAdded value: +{ + "enum": [ + "correctness-reviewer", + "architecture-reviewer", + "security-reviewer", + "performance-reviewer", + "test-reliability-reviewer", + "simplicity-reviewer", + "specialist-reviewer", + "adversarial-verifier" + ], + "type": "string" +} - added
Output schema / $defs / ReviewSeatStatusAdded value: +{ + "additionalProperties": false, + "properties": { + "alternatives": { + "items": { + "$ref": "#/$defs/ProviderName" + }, + "title": "Alternatives", + "type": "array" + }, + "available": { + "title": "Available", + "type": "boolean" + }, + "effort": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effort" + }, + "model": { + "title": "Model", + "type": "string" + }, + "provider": { + "$ref": "#/$defs/ProviderName" + }, + "reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Reason" + } + }, + "required": [ + "provider", + "model", + "effort", + "available", + "reason", + "alternatives" + ], + "title": "ReviewSeatStatus", + "type": "object" +} - added
Output schema / properties / reviewAdded value: +{ + "additionalProperties": { + "$ref": "#/$defs/ReviewSeatStatus" + }, + "default": {}, + "propertyNames": { + "$ref": "#/$defs/ReviewRole" + }, + "title": "Review", + "type": "object" +} - added
Output schema / properties / review_errorAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Review Error" +}
- Changed
read_conversation1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
run_round5 fields changed- changed
Input schema / $defs / GroupSeatSpec / properties / provider_options / descriptionPrevious value: -"Options for this seat's CLI; omitted keys use discussion member defaults."New value: +"Options for this seat's CLI, e.g. {\"model\": \"gpt-6.1-sol\", \"effort\": \"medium\"}; omitted keys use discussion member defaults." - changed
Input schema / $defs / ManagerSessionId / descriptionPrevious value: -"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Omission uses AGENTNAVE_HOST_SESSION_ID if configured, else keeps records separate."New value: +"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round unless AGENTNAVE_HOST_SESSION_ID is injected for this chat." - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / title / anyOfPrevious value: -[ - { - "maxLength": 200, - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / title / descriptionPrevious value: -"New show only: its title."New value: +"New show only: its short title, at most 48 columns (CJK characters count 2). If it is the manager chat's first conversation, it also names the workspace."
- Changed
start_agent5 fields changed- changed
Input schema / $defs / ManagerSessionId / descriptionPrevious value: -"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Omission uses AGENTNAVE_HOST_SESSION_ID if configured, else keeps records separate."New value: +"Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Required by start_agent and run_round unless AGENTNAVE_HOST_SESSION_ID is injected for this chat." - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / provider_options / descriptionPrevious value: -"Explicit options for the selected CLI. Call list_members(provider=...) for supported keys. Omitted options use configured App defaults, then native CLI settings."New value: +"Explicit options for the selected CLI, e.g. {\"model\": \"gpt-6.1-sol\", \"effort\": \"medium\"}; model is this CLI's own model ID as list_members shows it. Call list_members(provider=...) for supported keys. Omitted options use configured App defaults, then native CLI settings." - changed
Input schema / properties / title / anyOfPrevious value: -[ - { - "maxLength": 200, - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / title / descriptionPrevious value: -"Title for a new task conversation."New value: +"Short title for a new task conversation, at most 48 columns (CJK characters count 2). The first conversation of a manager chat also names its workspace for good, so give that one the chat's purpose; later private tasks may omit it."
- Changed
wait1 field changed- added
Input schema / additionalPropertiesAdded value: +false
4 tool updates
v0.41.0- Changed
list2 fields changed- added
Output schema / $defs / InvocationErrorPayloadAdded value: +{ + "properties": { + "code": { + "title": "Code", + "type": "string" + }, + "message": { + "title": "Message", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "title": "InvocationErrorPayload", + "type": "object" +} - added
Output schema / $defs / InvocationListItem / properties / errorAdded value: +{ + "$ref": "#/$defs/InvocationErrorPayload" +}
- Changed
read_conversation1 field changed- added
Input schema / properties / limitAdded value: +{ + "anyOf": [ + { + "maximum": 500, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "At most this many of the most recent messages or tasks; omitted counts the rest.", + "title": "Limit" +}
- Changed
start_agent1 field changed- added
Output schema / properties / warningsAdded value: +{ + "items": { + "type": "string" + }, + "title": "Warnings", + "type": "array" +}
- Changed
wait10 fields changed- added
Input schema / properties / ids / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - added
Input schema / properties / ids / defaultAdded value: +null - changed
Input schema / properties / ids / descriptionPrevious value: -"Distinct invocation_ids from start_agent and round_ids from run_round."New value: +"Distinct invocation_ids from start_agent and round_ids from run_round. Omit to wait on the inbox: every task and round of this server whose end you have not received yet." - removed
Input schema / properties / ids / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / ids / minItemsRemoved value: -1 - removed
Input schema / properties / ids / typeRemoved value: -"array" - added
Input schema / properties / manager_session_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "With ids omitted, only this boss chat's tasks and rounds; same value as start_agent and run_round. Ignored with ids.", + "title": "Manager Session Id" +} - added
Input schema / properties / wait_secondsAdded value: +{ + "anyOf": [ + { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Longest wait in seconds, 300 when omitted; 0 returns at once, with the ready handles or a running snapshot of each. Never stops the work.", + "title": "Wait Seconds" +} - removed
Input schema / requiredRemoved value: -[ - "ids" -] - changed
Output schema / properties / reason / enumPrevious value: -[ - "ready", - "wait_elapsed" -]New value: +[ + "ready", + "wait_elapsed", + "nothing_pending" +]
19 tool updates
v0.35.0- Added
cancel - Removed
cancel_agent - Removed
cancel_round - Changed
decide_answers3 fields changed- changed
Input schema / $defs / Decision / enumPrevious value: -[ - "publish", - "discard" -]New value: +[ + "publish", + "private" +] - changed
Input schema / properties / decisions / descriptionPrevious value: -"seat_id -> publish or discard"New value: +"seat_id -> publish or private" - changed
Output schema / $defs / Decision / enumPrevious value: -[ - "publish", - "discard" -]New value: +[ + "publish", + "private" +]
- Removed
describe_provider - Added
list - Removed
list_conversations - Removed
list_invocations - Changed
list_members5 fields changed- added
Input schema / $defsAdded value: +{ + "ProviderName": { + "enum": [ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi" + ], + "type": "string" + } +} - added
Input schema / properties / providerAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ProviderName" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Also return this CLI's permitted status and supported options." +} - added
Output schema / $defs / ProviderDetailsAdded value: +{ + "properties": { + "permitted": { + "title": "Permitted", + "type": "boolean" + }, + "provider": { + "$ref": "#/$defs/ProviderName" + }, + "show_permitted": { + "title": "Show Permitted", + "type": "boolean" + }, + "supported_options": { + "title": "Supported Options", + "type": "string" + } + }, + "required": [ + "provider", + "permitted", + "show_permitted", + "supported_options" + ], + "title": "ProviderDetails", + "type": "object" +} - added
Output schema / properties / provider_detailsAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/ProviderDetails" + }, + { + "type": "null" + } + ], + "default": null +} - changed
Output schema / titlePrevious value: -"MemberList"New value: +"MemberListPayload"
- Removed
open_group - Removed
post_host_message - Changed
read_conversation7 fields changed- added
Input schema / properties / include_privateAdded value: +{ + "default": false, + "description": "Shows: also each seat's private instructions and the answers kept private.", + "title": "Include Private", + "type": "boolean" +} - added
Input schema / properties / since_roundAdded value: +{ + "default": 0, + "description": "Shows: only messages from this round on; 0 includes host remarks posted before the first round.", + "minimum": 0, + "title": "Since Round", + "type": "integer" +} - removed
Output schema / $defsRemoved value: -{ - "Conversation": { - "properties": { - "created": { - "title": "Created", - "type": "string" - }, - "cwd": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Cwd" - }, - "entries": { - "items": { - "$ref": "#/$defs/EntryRecord" - }, - "title": "Entries", - "type": "array" - }, - "host": { - "anyOf": [ - { - "$ref": "#/$defs/HostName" - }, - { - "type": "null" - } - ], - "default": null - }, - "host_source": { - "$ref": "#/$defs/HostSource", - "default": "unknown" - }, - "id": { - "title": "Id", - "type": "string" - }, - "isolated": { - "default": false, - "title": "Isolated", - "type": "boolean" - }, - "kind": { - "enum": [ - "show", - "task" - ], - "title": "Kind", - "type": "string" - }, - "manager_session": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Manager Session" - }, - "review": { - "default": false, - "title": "Review", - "type": "boolean" - }, - "rounds": { - "items": { - "$ref": "#/$defs/RoundRecord" - }, - "title": "Rounds", - "type": "array" - }, - "seats": { - "items": { - "$ref": "#/$defs/SeatRecord" - }, - "title": "Seats", - "type": "array" - }, - "sessions": { - "additionalProperties": { - "$ref": "#/$defs/SessionRecord" - }, - "title": "Sessions", - "type": "object" - }, - "tasks": { - "items": { - "$ref": "#/$defs/TaskRecord" - }, - "title": "Tasks", - "type": "array" - }, - "title": { - "title": "Title", - "type": "string" - }, - "version": { - "const": 2, - "default": 2, - "title": "Version", - "type": "integer" - } - }, - "required": [ - "id", - "title", - "kind" - ], - "title": "Conversation", - "type": "object" - }, - "EntryRecord": { - "properties": { - "forward_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Forward Id" - }, - "forward_source": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Forward Source" - }, - "kind": { - "enum": [ - "task", - "host", - "answer", - "absent", - "forward" - ], - "title": "Kind", - "type": "string" - }, - "manager_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Manager Model" - }, - "manager_reported_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Manager Reported Model" - }, - "reported_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Reported Model" - }, - "round": { - "title": "Round", - "type": "integer" - }, - "seat": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Seat" - }, - "text": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Text" - }, - "time": { - "title": "Time", - "type": "string" - } - }, - "required": [ - "round", - "kind", - "time" - ], - "title": "EntryRecord", - "type": "object" - }, - "HostName": { - "enum": [ - "codex", - "claude", - "codebuddy", - "workbuddy", - "grok", - "antigravity", - "pi", - "gemini", - "opencode", - "hermes" - ], - "type": "string" - }, - "HostSource": { - "enum": [ - "env", - "parent", - "unknown" - ], - "type": "string" - }, - "ProviderOption": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - }, - "Review": { - "enum": [ - "pending", - "publish", - "discard" - ], - "type": "string" - }, - "RoundOrder": { - "enum": [ - "parallel", - "serial" - ], - "type": "string" - }, - "RoundRecord": { - "properties": { - "error": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Error" - }, - "id": { - "title": "Id", - "type": "string" - }, - "number": { - "title": "Number", - "type": "integer" - }, - "order": { - "$ref": "#/$defs/RoundOrder" - }, - "seats": { - "items": { - "$ref": "#/$defs/SeatRunRecord" - }, - "title": "Seats", - "type": "array" - }, - "status": { - "default": "running", - "enum": [ - "running", - "finished", - "failed", - "cancelled", - "interrupted" - ], - "title": "Status", - "type": "string" - } - }, - "required": [ - "id", - "number", - "order", - "seats" - ], - "title": "RoundRecord", - "type": "object" - }, - "SeatRecord": { - "properties": { - "access": { - "anyOf": [ - { - "enum": [ - "read", - "write" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Access" - }, - "cwd": { - "title": "Cwd", - "type": "string" - }, - "id": { - "title": "Id", - "type": "string" - }, - "provider": { - "title": "Provider", - "type": "string" - }, - "provider_options": { - "additionalProperties": { - "$ref": "#/$defs/ProviderOption" - }, - "title": "Provider Options", - "type": "object" - }, - "role": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Role" - } - }, - "required": [ - "id", - "provider", - "cwd" - ], - "title": "SeatRecord", - "type": "object" - }, - "SeatRunRecord": { - "properties": { - "committed": { - "default": false, - "title": "Committed", - "type": "boolean" - }, - "error": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Error" - }, - "instruction": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Instruction" - }, - "output": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Output" - }, - "reported_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Reported Model" - }, - "review": { - "anyOf": [ - { - "$ref": "#/$defs/Review" - }, - { - "type": "null" - } - ], - "default": null - }, - "seat_id": { - "title": "Seat Id", - "type": "string" - }, - "status": { - "default": "pending", - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "not_started", - "interrupted" - ], - "title": "Status", - "type": "string" - } - }, - "required": [ - "seat_id" - ], - "title": "SeatRunRecord", - "type": "object" - }, - "SessionRecord": { - "properties": { - "cursor": { - "default": 0, - "title": "Cursor", - "type": "integer" - }, - "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Session Id" - } - }, - "title": "SessionRecord", - "type": "object" - }, - "TaskRecord": { - "properties": { - "access": { - "anyOf": [ - { - "enum": [ - "read", - "write" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Access" - }, - "cwd": { - "title": "Cwd", - "type": "string" - }, - "elapsed_ms": { - "default": 0, - "title": "Elapsed Ms", - "type": "integer" - }, - "error": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Error" - }, - "forward": { - "items": { - "type": "string" - }, - "title": "Forward", - "type": "array" - }, - "id": { - "title": "Id", - "type": "string" - }, - "manager_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Manager Model" - }, - "manager_reported_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Manager Reported Model" - }, - "model": { - "title": "Model", - "type": "string" - }, - "output": { - "default": "", - "title": "Output", - "type": "string" - }, - "prompt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Prompt" - }, - "provider": { - "title": "Provider", - "type": "string" - }, - "reported_model": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Reported Model" - }, - "role": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Role" - }, - "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Session Id" - }, - "status": { - "default": "running", - "title": "Status", - "type": "string" - }, - "time": { - "title": "Time", - "type": "string" - } - }, - "required": [ - "id", - "provider", - "model", - "cwd", - "time" - ], - "title": "TaskRecord", - "type": "object" - } -} - added
Output schema / additionalPropertiesAdded value: +true - removed
Output schema / propertiesRemoved value: -{ - "conversation": { - "$ref": "#/$defs/Conversation" - }, - "director_url": { - "title": "Director Url", - "type": "string" - }, - "public_url": { - "title": "Public Url", - "type": "string" - }, - "writable": { - "title": "Writable", - "type": "boolean" - } -} - removed
Output schema / requiredRemoved value: -[ - "conversation", - "writable" -] - changed
Output schema / titlePrevious value: -"ConversationView"New value: +"read_conversationDictOutput"
- Changed
run_round43 fields changed- added
Input schema / $defs / GroupSeatSpecAdded value: +{ + "additionalProperties": false, + "properties": { + "access": { + "anyOf": [ + { + "enum": [ + "read", + "write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declared desk access: read for exploring, planning or reviewing, write for changing files. Recorded and shown only; it never changes the CLI's native permissions.", + "title": "Access" + }, + "cwd": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Absolute directory for this seat; defaults to the group cwd.", + "title": "Cwd" + }, + "id": { + "pattern": "^[a-z][a-z0-9_-]{0,31}$", + "title": "Id", + "type": "string" + }, + "provider": { + "$ref": "#/$defs/ProviderName" + }, + "provider_options": { + "additionalProperties": { + "$ref": "#/$defs/ProviderOption" + }, + "description": "Options for this seat's CLI; omitted keys use discussion member defaults.", + "title": "Provider Options", + "type": "object" + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional desk role for this seat; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no role.", + "title": "Role" + } + }, + "required": [ + "id", + "provider" + ], + "title": "GroupSeatSpec", + "type": "object" +} - added
Input schema / $defs / ProviderNameAdded value: +{ + "enum": [ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi" + ], + "type": "string" +} - added
Input schema / $defs / ProviderOptionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "number" + }, + { + "type": "boolean" + } + ] +} - added
Input schema / properties / cwdAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New show only: absolute directory seats run in; ignored when isolated.", + "title": "Cwd" +} - changed
Input schema / properties / forward / descriptionPrevious value: -"Message ids from wait_agent, wait_any, wait_round, decide_answers or post_host_message to add as committed forward entries before this round's task, in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. Seats receive them as data, not instructions."New value: +"Message ids from wait, run_round, decide_answers or read_conversation to add as committed forward entries before this round's task, in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. Seats receive them as data, not instructions." - added
Input schema / properties / group_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / group_id / defaultAdded value: +null - added
Input schema / properties / group_id / descriptionAdded value: +"Show to continue; omit to open a new show from title and members." - removed
Input schema / properties / group_id / typeRemoved value: -"string" - added
Input schema / properties / isolatedAdded value: +{ + "default": false, + "description": "New show only: each seat gets its own empty directory and restricted_tools; seat options may only set model and effort (and Pi's provider).", + "title": "Isolated", + "type": "boolean" +} - added
Input schema / properties / membersAdded value: +{ + "anyOf": [ + { + "items": { + "$ref": "#/$defs/GroupSeatSpec" + }, + "maxItems": 7, + "minItems": 2, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New show only: its 2–7 seats.", + "title": "Members" +} - added
Input schema / properties / order / defaultAdded value: +"parallel" - added
Input schema / properties / prompt / anyOfAdded value: +[ + { + "maxLength": 12000, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / prompt / defaultAdded value: +null - changed
Input schema / properties / prompt / descriptionPrevious value: -"Shared task for this round, visible to all seats."New value: +"Shared task for this round, visible to all seats; without seats, a public host remark every seat receives with its next round. Omit only to open a new show without posting anything." - removed
Input schema / properties / prompt / minLengthRemoved value: -1 - removed
Input schema / properties / prompt / typeRemoved value: -"string" - added
Input schema / properties / reviewAdded value: +{ + "default": false, + "description": "New show only: hold each answer until decide_answers decides it.", + "title": "Review", + "type": "boolean" +} - added
Input schema / properties / seats / defaultAdded value: +[] - changed
Input schema / properties / seats / descriptionPrevious value: -"Ordered seat ids that each answer once this round."New value: +"Ordered seat ids that each answer once; empty posts prompt as a host remark." - removed
Input schema / properties / seats / minItemsRemoved value: -1 - added
Input schema / properties / titleAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New show only: its title.", + "title": "Title" +} - removed
Input schema / requiredRemoved value: -[ - "group_id", - "seats", - "order", - "prompt" -] - added
Output schema / $defs / GroupSeatPayloadAdded value: +{ + "properties": { + "access": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Access" + }, + "cwd": { + "title": "Cwd", + "type": "string" + }, + "defaults_applied": { + "items": { + "type": "string" + }, + "title": "Defaults Applied", + "type": "array" + }, + "effort": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effort" + }, + "id": { + "title": "Id", + "type": "string" + }, + "model": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model" + }, + "provider": { + "title": "Provider", + "type": "string" + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role" + } + }, + "required": [ + "id", + "provider", + "cwd", + "model", + "effort", + "role", + "access", + "defaults_applied" + ], + "title": "GroupSeatPayload", + "type": "object" +} - added
Output schema / $defs / RoundPayloadAdded value: +{ + "properties": { + "elapsed_ms": { + "title": "Elapsed Ms", + "type": "integer" + }, + "entries": { + "items": { + "$ref": "#/$defs/CommittedEntryPayload" + }, + "title": "Entries", + "type": "array" + }, + "error": { + "title": "Error", + "type": "string" + }, + "group_id": { + "title": "Group Id", + "type": "string" + }, + "order": { + "enum": [ + "parallel", + "serial" + ], + "title": "Order", + "type": "string" + }, + "reason": { + "title": "Reason", + "type": "string" + }, + "round": { + "title": "Round", + "type": "integer" + }, + "round_id": { + "title": "Round Id", + "type": "string" + }, + "seats": { + "items": { + "$ref": "#/$defs/SeatRunPayload" + }, + "title": "Seats", + "type": "array" + }, + "status": { + "enum": [ + "running", + "finished", + "failed", + "cancelled" + ], + "title": "Status", + "type": "string" + } + }, + "required": [ + "round_id", + "group_id", + "round", + "order", + "status", + "reason", + "elapsed_ms", + "seats", + "entries" + ], + "title": "RoundPayload", + "type": "object" +} - changed
Output schema / $defs / SeatRunPayload / properties / status / enumPrevious value: -[ - "pending", - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "not_started", - "pending_review", - "discarded" -]New value: +[ + "pending", + "running", + "succeeded", + "failed", + "blocked", + "cancelled", + "not_started", + "pending_review", + "private" +] - removed
Output schema / properties / dashboard_errorRemoved value: -{ - "title": "Dashboard Error", - "type": "string" -} - removed
Output schema / properties / dashboard_urlRemoved value: -{ - "title": "Dashboard Url", - "type": "string" -} - removed
Output schema / properties / director_urlRemoved value: -{ - "title": "Director Url", - "type": "string" -} - removed
Output schema / properties / elapsed_msRemoved value: -{ - "title": "Elapsed Ms", - "type": "integer" -} - removed
Output schema / properties / errorRemoved value: -{ - "title": "Error", - "type": "string" -} - added
Output schema / properties / membersAdded value: +{ + "items": { + "$ref": "#/$defs/GroupSeatPayload" + }, + "title": "Members", + "type": "array" +} - removed
Output schema / properties / orderRemoved value: -{ - "enum": [ - "parallel", - "serial" - ], - "title": "Order", - "type": "string" -} - removed
Output schema / properties / public_urlRemoved value: -{ - "title": "Public Url", - "type": "string" -} - removed
Output schema / properties / reasonRemoved value: -{ - "title": "Reason", - "type": "string" -} - added
Output schema / properties / round / $refAdded value: +"#/$defs/RoundPayload" - removed
Output schema / properties / round / titleRemoved value: -"Round" - removed
Output schema / properties / round / typeRemoved value: -"integer" - removed
Output schema / properties / round_idRemoved value: -{ - "title": "Round Id", - "type": "string" -} - removed
Output schema / properties / seatsRemoved value: -{ - "items": { - "$ref": "#/$defs/SeatRunPayload" - }, - "title": "Seats", - "type": "array" -} - removed
Output schema / properties / statusRemoved value: -{ - "enum": [ - "running", - "finished", - "failed", - "cancelled" - ], - "title": "Status", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "round_id", - "group_id", - "round", - "order", - "status", - "reason", - "elapsed_ms", - "seats", - "entries" -]New value: +[ + "group_id" +] - changed
Output schema / titlePrevious value: -"RoundPayload"New value: +"ShowRunPayload"
- Changed
start_agent13 fields changed- changed
Input schema / properties / access / descriptionPrevious value: -"Declared desk access: read for exploring, planning or reviewing, write for changing files. Recorded and shown only; it does not change the CLI's native permissions. A desk keeps its first declared tier in this manager workspace; omitting it inherits that tier, and a different tier is rejected, so use another role and pass findings with forward or a meeting instead."New value: +"Declared desk access: read for exploring, planning or reviewing, write for changing files. Recorded and shown only; it never changes the CLI's native permissions." - changed
Input schema / properties / forward / descriptionPrevious value: -"Message ids from wait_agent, wait_any, wait_round, decide_answers or post_host_message to inject before the prompt in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. The injected text is labelled as data, not instructions, and the saved task prompt stays your original text."New value: +"Message ids from wait, run_round, decide_answers or read_conversation to inject before the prompt in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. The injected text is labelled as data, not instructions, and the saved task prompt stays your original text." - removed
Input schema / properties / new_threadRemoved value: -{ - "default": false, - "description": "true always opens a fresh private thread instead of continuing this desk's most recent one; it cannot be combined with session_id or conversation_id.", - "title": "New Thread", - "type": "boolean" -} - changed
Input schema / properties / provider / descriptionPrevious value: -"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, deepseek, grok, pi. Excluded providers: none. start_agent rejects excluded providers; groups follow discussion member limits without host exclusions."New value: +"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, deepseek, grok, pi. Excluded providers: none. start_agent rejects excluded providers; shows follow discussion member limits without host exclusions." - changed
Input schema / properties / provider_options / descriptionPrevious value: -"Explicit options for the selected CLI. Call describe_provider(provider) for supported keys. Omitted options use configured App defaults, then native CLI settings."New value: +"Explicit options for the selected CLI. Call list_members(provider=...) for supported keys. Omitted options use configured App defaults, then native CLI settings." - changed
Input schema / properties / role / descriptionPrevious value: -"Optional desk role for this CLI; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no role. The desk identity is (provider, requested model, role)."New value: +"Optional label shown on this task's desk; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no label. Each native thread is its own desk, whatever its role." - changed
Input schema / properties / session_id / descriptionPrevious value: -"To continue a specific native conversation, use the session_id returned by a finished invocation of the same provider; never use an invocation_id here. When omitted with a known manager_session_id, the task continues this desk's most recent private thread unless new_thread=true."New value: +"To continue a specific native conversation, use the session_id returned by a finished invocation of the same provider; never use an invocation_id here. Omitted, the task starts a new native thread: a new desk in the App." - removed
Output schema / properties / dashboard_errorRemoved value: -{ - "title": "Dashboard Error", - "type": "string" -} - removed
Output schema / properties / dashboard_urlRemoved value: -{ - "title": "Dashboard Url", - "type": "string" -} - removed
Output schema / properties / director_urlRemoved value: -{ - "title": "Director Url", - "type": "string" -} - removed
Output schema / properties / public_urlRemoved value: -{ - "title": "Public Url", - "type": "string" -} - removed
Output schema / properties / resumedRemoved value: -{ - "title": "Resumed", - "type": "boolean" -} - changed
Output schema / requiredPrevious value: -[ - "invocation_id", - "status", - "reason", - "elapsed_ms", - "conversation_id", - "resumed", - "access" -]New value: +[ + "invocation_id", + "status", + "reason", + "elapsed_ms", + "conversation_id", + "access" +]
- Removed
update_conversation - Added
wait - Removed
wait_agent - Removed
wait_any - Removed
wait_round
13 tool updates
v0.31.0- Changed
cancel_agent1 field changed- added
Output schema / properties / message_idAdded value: +{ + "title": "Message Id", + "type": "string" +}
- Changed
cancel_round3 fields changed- added
Output schema / $defs / CommittedEntryPayloadAdded value: +{ + "properties": { + "kind": { + "enum": [ + "task", + "answer", + "absent", + "forward", + "host" + ], + "title": "Kind", + "type": "string" + }, + "message_id": { + "title": "Message Id", + "type": "string" + }, + "round": { + "title": "Round", + "type": "integer" + }, + "seat": { + "title": "Seat", + "type": "string" + } + }, + "required": [ + "message_id", + "kind", + "round" + ], + "title": "CommittedEntryPayload", + "type": "object" +} - added
Output schema / properties / entriesAdded value: +{ + "items": { + "$ref": "#/$defs/CommittedEntryPayload" + }, + "title": "Entries", + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "round_id", - "group_id", - "round", - "order", - "status", - "reason", - "elapsed_ms", - "seats" -]New value: +[ + "round_id", + "group_id", + "round", + "order", + "status", + "reason", + "elapsed_ms", + "seats", + "entries" +]
- Changed
decide_answers5 fields changed- added
Output schema / $defs / CommittedEntryPayloadAdded value: +{ + "properties": { + "kind": { + "enum": [ + "task", + "answer", + "absent", + "forward", + "host" + ], + "title": "Kind", + "type": "string" + }, + "message_id": { + "title": "Message Id", + "type": "string" + }, + "round": { + "title": "Round", + "type": "integer" + }, + "seat": { + "title": "Seat", + "type": "string" + } + }, + "required": [ + "message_id", + "kind", + "round" + ], + "title": "CommittedEntryPayload", + "type": "object" +} - added
Output schema / properties / entriesAdded value: +{ + "items": { + "$ref": "#/$defs/CommittedEntryPayload" + }, + "title": "Entries", + "type": "array" +} - added
Output schema / properties / errorAdded value: +{ + "title": "Error", + "type": "string" +} - added
Output schema / properties / statusAdded value: +{ + "enum": [ + "running", + "review", + "finished", + "failed", + "cancelled", + "interrupted" + ], + "title": "Status", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "round_id", - "decisions", - "pending_review", - "committed" -]New value: +[ + "round_id", + "decisions", + "pending_review", + "committed", + "entries", + "status" +]
- Changed
describe_provider2 fields changed- changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi" +] - changed
Output schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi" +]
- Changed
list_members1 field changed- changed
Output schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi" +]
- Changed
open_group9 fields changed- added
Input schema / $defs / GroupSeatSpec / properties / accessAdded value: +{ + "anyOf": [ + { + "enum": [ + "read", + "write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declared desk access: read for exploring, planning or reviewing, write for changing files. Recorded and shown only; it does not change the CLI's native permissions. A desk keeps its first declared tier in this manager workspace; omitting it inherits that tier, and a different tier is rejected, so use another role and pass findings with forward or a meeting instead.", + "title": "Access" +} - added
Input schema / $defs / GroupSeatSpec / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional desk role for this seat; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no role.", + "title": "Role" +} - added
Input schema / $defs / ManagerSessionIdAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Omission uses AGENTNAVE_HOST_SESSION_ID if configured, else keeps records separate." +} - changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi" +] - added
Input schema / properties / manager_session_idAdded value: +{ + "$ref": "#/$defs/ManagerSessionId", + "default": null +} - changed
Input schema / properties / seats / maxItemsPrevious value: -6New value: +7 - added
Output schema / $defs / GroupSeatPayload / properties / accessAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Access" +} - added
Output schema / $defs / GroupSeatPayload / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Role" +} - changed
Output schema / $defs / GroupSeatPayload / requiredPrevious value: -[ - "id", - "provider", - "cwd", - "model", - "effort", - "defaults_applied" -]New value: +[ + "id", + "provider", + "cwd", + "model", + "effort", + "role", + "access", + "defaults_applied" +]
- Changed
post_host_message4 fields changed- added
Input schema / $defs / ManagerSessionIdAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Omission uses AGENTNAVE_HOST_SESSION_ID if configured, else keeps records separate." +} - added
Input schema / properties / manager_session_idAdded value: +{ + "$ref": "#/$defs/ManagerSessionId", + "default": null +} - added
Output schema / properties / message_idAdded value: +{ + "title": "Message Id", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "conversation_id", - "entry_index" -]New value: +[ + "conversation_id", + "entry_index", + "message_id" +]
- Changed
read_conversation13 fields changed- added
Output schema / $defs / EntryRecord / properties / forward_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Forward Id" +} - added
Output schema / $defs / EntryRecord / properties / forward_sourceAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Forward Source" +} - changed
Output schema / $defs / EntryRecord / properties / kind / enumPrevious value: -[ - "task", - "host", - "answer", - "absent" -]New value: +[ + "task", + "host", + "answer", + "absent", + "forward" +] - added
Output schema / $defs / EntryRecord / properties / manager_reported_modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Manager Reported Model" +} - added
Output schema / $defs / EntryRecord / properties / reported_modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reported Model" +} - added
Output schema / $defs / SeatRecord / properties / accessAdded value: +{ + "anyOf": [ + { + "enum": [ + "read", + "write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Access" +} - added
Output schema / $defs / SeatRecord / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" +} - added
Output schema / $defs / SeatRunRecord / properties / reported_modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reported Model" +} - added
Output schema / $defs / TaskRecord / properties / accessAdded value: +{ + "anyOf": [ + { + "enum": [ + "read", + "write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Access" +} - added
Output schema / $defs / TaskRecord / properties / forwardAdded value: +{ + "items": { + "type": "string" + }, + "title": "Forward", + "type": "array" +} - added
Output schema / $defs / TaskRecord / properties / manager_reported_modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Manager Reported Model" +} - added
Output schema / $defs / TaskRecord / properties / reported_modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reported Model" +} - added
Output schema / $defs / TaskRecord / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" +}
- Changed
run_round6 fields changed- added
Input schema / $defs / ManagerSessionIdAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Omission uses AGENTNAVE_HOST_SESSION_ID if configured, else keeps records separate." +} - added
Input schema / properties / forwardAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Message ids from wait_agent, wait_any, wait_round, decide_answers or post_host_message to add as committed forward entries before this round's task, in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. Seats receive them as data, not instructions.", + "title": "Forward" +} - added
Input schema / properties / manager_session_idAdded value: +{ + "$ref": "#/$defs/ManagerSessionId", + "default": null +} - added
Output schema / $defs / CommittedEntryPayloadAdded value: +{ + "properties": { + "kind": { + "enum": [ + "task", + "answer", + "absent", + "forward", + "host" + ], + "title": "Kind", + "type": "string" + }, + "message_id": { + "title": "Message Id", + "type": "string" + }, + "round": { + "title": "Round", + "type": "integer" + }, + "seat": { + "title": "Seat", + "type": "string" + } + }, + "required": [ + "message_id", + "kind", + "round" + ], + "title": "CommittedEntryPayload", + "type": "object" +} - added
Output schema / properties / entriesAdded value: +{ + "items": { + "$ref": "#/$defs/CommittedEntryPayload" + }, + "title": "Entries", + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "round_id", - "group_id", - "round", - "order", - "status", - "reason", - "elapsed_ms", - "seats" -]New value: +[ + "round_id", + "group_id", + "round", + "order", + "status", + "reason", + "elapsed_ms", + "seats", + "entries" +]
- Changed
start_agent13 fields changed- added
Input schema / $defs / ManagerSessionIdAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Current manager chat/session ID, shared by all tasks and groups in that chat. Use the host's real session ID when available; otherwise generate one UUID once for this manager chat and keep reusing it. A different chat needs a different ID. Never use the CLI name, MCP connection ID, or subagent session_id. Omission uses AGENTNAVE_HOST_SESSION_ID if configured, else keeps records separate." +} - changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok", - "pi" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "deepseek", + "grok", + "pi" +] - added
Input schema / properties / accessAdded value: +{ + "anyOf": [ + { + "enum": [ + "read", + "write" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Declared desk access: read for exploring, planning or reviewing, write for changing files. Recorded and shown only; it does not change the CLI's native permissions. A desk keeps its first declared tier in this manager workspace; omitting it inherits that tier, and a different tier is rejected, so use another role and pass findings with forward or a meeting instead.", + "title": "Access" +} - added
Input schema / properties / forwardAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Message ids from wait_agent, wait_any, wait_round, decide_answers or post_host_message to inject before the prompt in order. Only succeeded tasks and committed entries of this manager workspace qualify; at most 20, no repeats. The injected text is labelled as data, not instructions, and the saved task prompt stays your original text.", + "title": "Forward" +} - added
Input schema / properties / manager_session_idAdded value: +{ + "$ref": "#/$defs/ManagerSessionId", + "default": null +} - added
Input schema / properties / new_threadAdded value: +{ + "default": false, + "description": "true always opens a fresh private thread instead of continuing this desk's most recent one; it cannot be combined with session_id or conversation_id.", + "title": "New Thread", + "type": "boolean" +} - changed
Input schema / properties / provider / descriptionPrevious value: -"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok, pi. Excluded providers: none. start_agent rejects excluded providers; groups follow discussion member limits without host exclusions."New value: +"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, deepseek, grok, pi. Excluded providers: none. start_agent rejects excluded providers; groups follow discussion member limits without host exclusions." - added
Input schema / properties / roleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional desk role for this CLI; 1–40 characters after trimming, no newlines or control characters. Blank or omitted means no role. The desk identity is (provider, requested model, role).", + "title": "Role" +} - changed
Input schema / properties / session_id / descriptionPrevious value: -"To continue a conversation, use the session_id returned by a finished invocation of the same provider; omit for a new conversation. Never use an invocation_id here."New value: +"To continue a specific native conversation, use the session_id returned by a finished invocation of the same provider; never use an invocation_id here. When omitted with a known manager_session_id, the task continues this desk's most recent private thread unless new_thread=true." - added
Output schema / properties / accessAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Access" +} - added
Output schema / properties / message_idAdded value: +{ + "title": "Message Id", + "type": "string" +} - added
Output schema / properties / resumedAdded value: +{ + "title": "Resumed", + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "invocation_id", - "status", - "reason", - "elapsed_ms", - "conversation_id" -]New value: +[ + "invocation_id", + "status", + "reason", + "elapsed_ms", + "conversation_id", + "resumed", + "access" +]
- Changed
wait_agent1 field changed- added
Output schema / properties / message_idAdded value: +{ + "title": "Message Id", + "type": "string" +}
- Changed
wait_any1 field changed- added
Output schema / $defs / InvocationPayload / properties / message_idAdded value: +{ + "title": "Message Id", + "type": "string" +}
- Changed
wait_round3 fields changed- added
Output schema / $defs / CommittedEntryPayloadAdded value: +{ + "properties": { + "kind": { + "enum": [ + "task", + "answer", + "absent", + "forward", + "host" + ], + "title": "Kind", + "type": "string" + }, + "message_id": { + "title": "Message Id", + "type": "string" + }, + "round": { + "title": "Round", + "type": "integer" + }, + "seat": { + "title": "Seat", + "type": "string" + } + }, + "required": [ + "message_id", + "kind", + "round" + ], + "title": "CommittedEntryPayload", + "type": "object" +} - added
Output schema / properties / entriesAdded value: +{ + "items": { + "$ref": "#/$defs/CommittedEntryPayload" + }, + "title": "Entries", + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "round_id", - "group_id", - "round", - "order", - "status", - "reason", - "elapsed_ms", - "seats" -]New value: +[ + "round_id", + "group_id", + "round", + "order", + "status", + "reason", + "elapsed_ms", + "seats", + "entries" +]
12 tool updates
v0.23.0- Changed
cancel_round5 fields changed- changed
Output schema / $defs / SeatRunPayload / properties / status / enumPrevious value: -[ - "pending", - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "not_started" -]New value: +[ + "pending", + "running", + "succeeded", + "failed", + "blocked", + "cancelled", + "not_started", + "pending_review", + "discarded" +] - added
Output schema / properties / dashboard_errorAdded value: +{ + "title": "Dashboard Error", + "type": "string" +} - added
Output schema / properties / dashboard_urlAdded value: +{ + "title": "Dashboard Url", + "type": "string" +} - added
Output schema / properties / director_urlAdded value: +{ + "title": "Director Url", + "type": "string" +} - added
Output schema / properties / public_urlAdded value: +{ + "title": "Public Url", + "type": "string" +}
- Added
decide_answers - Changed
describe_provider2 fields changed- added
Output schema / properties / show_permittedAdded value: +{ + "title": "Show Permitted", + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "provider", - "permitted", - "supported_options", - "host", - "host_source" -]New value: +[ + "provider", + "permitted", + "show_permitted", + "supported_options", + "host", + "host_source" +]
- Added
list_conversations - Changed
list_invocations2 fields changed- added
Output schema / properties / restart_safeAdded value: +{ + "title": "Restart Safe", + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "invocations" -]New value: +[ + "invocations", + "restart_safe" +]
- Changed
open_group16 fields changed- added
Input schema / properties / cwd / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / cwd / defaultAdded value: +null - changed
Input schema / properties / cwd / descriptionPrevious value: -"Absolute existing directory seats run in by default."New value: +"Absolute existing directory seats run in; ignored when isolated." - removed
Input schema / properties / cwd / minLengthRemoved value: -1 - removed
Input schema / properties / cwd / typeRemoved value: -"string" - added
Input schema / properties / isolatedAdded value: +{ + "default": false, + "description": "Give each seat its own empty directory and restricted_tools; seat options may only set model and effort (and Pi's provider).", + "title": "Isolated", + "type": "boolean" +} - added
Input schema / properties / reviewAdded value: +{ + "default": false, + "description": "Hold each successful answer until decide_answers publishes it.", + "title": "Review", + "type": "boolean" +} - added
Input schema / properties / titleAdded value: +{ + "maxLength": 200, + "minLength": 1, + "title": "Title", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "cwd", - "seats" -]New value: +[ + "title", + "seats" +] - added
Output schema / properties / conversation_idAdded value: +{ + "title": "Conversation Id", + "type": "string" +} - added
Output schema / properties / dashboard_errorAdded value: +{ + "title": "Dashboard Error", + "type": "string" +} - added
Output schema / properties / dashboard_urlAdded value: +{ + "title": "Dashboard Url", + "type": "string" +} - added
Output schema / properties / director_urlAdded value: +{ + "title": "Director Url", + "type": "string" +} - added
Output schema / properties / public_urlAdded value: +{ + "title": "Public Url", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "group_id", - "seats" -]New value: +[ + "group_id", + "conversation_id", + "seats" +] - changed
Output schema / titlePrevious value: -"GroupPayload"New value: +"ShowPayload"
- Added
post_host_message - Added
read_conversation - Changed
run_round7 fields changed- added
Input schema / $defsAdded value: +{ + "ManagerModel": { + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Your current manager model ID, when known from trusted host context. Metadata for this message only; never the subagent model or a CLI-derived guess. Omit when unknown. Does not change provider settings." + } +} - added
Input schema / properties / manager_modelAdded value: +{ + "$ref": "#/$defs/ManagerModel", + "default": null +} - changed
Output schema / $defs / SeatRunPayload / properties / status / enumPrevious value: -[ - "pending", - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "not_started" -]New value: +[ + "pending", + "running", + "succeeded", + "failed", + "blocked", + "cancelled", + "not_started", + "pending_review", + "discarded" +] - added
Output schema / properties / dashboard_errorAdded value: +{ + "title": "Dashboard Error", + "type": "string" +} - added
Output schema / properties / dashboard_urlAdded value: +{ + "title": "Dashboard Url", + "type": "string" +} - added
Output schema / properties / director_urlAdded value: +{ + "title": "Director Url", + "type": "string" +} - added
Output schema / properties / public_urlAdded value: +{ + "title": "Public Url", + "type": "string" +}
- Changed
start_agent11 fields changed- added
Input schema / $defs / ManagerModelAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Your current manager model ID, when known from trusted host context. Metadata for this message only; never the subagent model or a CLI-derived guess. Omit when unknown. Does not change provider settings." +} - added
Input schema / properties / conversation_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Task conversation to add this task to.", + "title": "Conversation Id" +} - added
Input schema / properties / manager_modelAdded value: +{ + "$ref": "#/$defs/ManagerModel", + "default": null +} - added
Input schema / properties / titleAdded value: +{ + "anyOf": [ + { + "maxLength": 200, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Title for a new task conversation.", + "title": "Title" +} - added
Output schema / properties / conversation_idAdded value: +{ + "title": "Conversation Id", + "type": "string" +} - added
Output schema / properties / dashboard_errorAdded value: +{ + "title": "Dashboard Error", + "type": "string" +} - added
Output schema / properties / dashboard_urlAdded value: +{ + "title": "Dashboard Url", + "type": "string" +} - added
Output schema / properties / director_urlAdded value: +{ + "title": "Director Url", + "type": "string" +} - added
Output schema / properties / public_urlAdded value: +{ + "title": "Public Url", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "invocation_id", - "status", - "reason", - "elapsed_ms" -]New value: +[ + "invocation_id", + "status", + "reason", + "elapsed_ms", + "conversation_id" +] - changed
Output schema / titlePrevious value: -"InvocationPayload"New value: +"TaskStartPayload"
- Added
update_conversation - Changed
wait_round5 fields changed- changed
Output schema / $defs / SeatRunPayload / properties / status / enumPrevious value: -[ - "pending", - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "not_started" -]New value: +[ + "pending", + "running", + "succeeded", + "failed", + "blocked", + "cancelled", + "not_started", + "pending_review", + "discarded" +] - added
Output schema / properties / dashboard_errorAdded value: +{ + "title": "Dashboard Error", + "type": "string" +} - added
Output schema / properties / dashboard_urlAdded value: +{ + "title": "Dashboard Url", + "type": "string" +} - added
Output schema / properties / director_urlAdded value: +{ + "title": "Director Url", + "type": "string" +} - added
Output schema / properties / public_urlAdded value: +{ + "title": "Public Url", + "type": "string" +}
8 tool updates
v0.21.0- Changed
cancel_agent1 field changed- added
Output schema / properties / defaults_appliedAdded value: +{ + "items": { + "type": "string" + }, + "title": "Defaults Applied", + "type": "array" +}
- Changed
describe_provider5 fields changed- added
Output schema / $defs / HostNameAdded value: +{ + "enum": [ + "codex", + "claude", + "codebuddy", + "workbuddy", + "grok", + "antigravity", + "pi", + "gemini", + "opencode", + "hermes" + ], + "type": "string" +} - added
Output schema / $defs / HostSourceAdded value: +{ + "enum": [ + "env", + "parent", + "unknown" + ], + "type": "string" +} - added
Output schema / properties / hostAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/HostName" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / host_sourceAdded value: +{ + "$ref": "#/$defs/HostSource" +} - changed
Output schema / requiredPrevious value: -[ - "provider", - "permitted", - "supported_options" -]New value: +[ + "provider", + "permitted", + "supported_options", + "host", + "host_source" +]
- Changed
list_invocations1 field changed- added
Output schema / $defs / InvocationListItem / properties / result_readAdded value: +{ + "title": "Result Read", + "type": "boolean" +}
- Added
list_members - Changed
open_group5 fields changed- changed
Input schema / $defs / GroupSeatSpec / properties / provider_options / descriptionPrevious value: -"Explicit options for this seat's CLI, as for start_agent."New value: +"Options for this seat's CLI; omitted keys use discussion member defaults." - added
Output schema / $defs / GroupSeatPayload / properties / defaults_appliedAdded value: +{ + "items": { + "type": "string" + }, + "title": "Defaults Applied", + "type": "array" +} - added
Output schema / $defs / GroupSeatPayload / properties / effortAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effort" +} - added
Output schema / $defs / GroupSeatPayload / properties / modelAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Model" +} - changed
Output schema / $defs / GroupSeatPayload / requiredPrevious value: -[ - "id", - "provider", - "cwd" -]New value: +[ + "id", + "provider", + "cwd", + "model", + "effort", + "defaults_applied" +]
- Changed
start_agent3 fields changed- changed
Input schema / properties / provider / descriptionPrevious value: -"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok, pi. Excluded providers: none. start_agent rejects excluded providers; groups may seat any provider."New value: +"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok, pi. Excluded providers: none. start_agent rejects excluded providers; groups follow discussion member limits without host exclusions." - changed
Input schema / properties / provider_options / descriptionPrevious value: -"Explicit options for the selected CLI. Call describe_provider(provider) for supported keys. Omitted options inherit native CLI settings."New value: +"Explicit options for the selected CLI. Call describe_provider(provider) for supported keys. Omitted options use configured App defaults, then native CLI settings." - added
Output schema / properties / defaults_appliedAdded value: +{ + "items": { + "type": "string" + }, + "title": "Defaults Applied", + "type": "array" +}
- Changed
wait_agent1 field changed- added
Output schema / properties / defaults_appliedAdded value: +{ + "items": { + "type": "string" + }, + "title": "Defaults Applied", + "type": "array" +}
- Changed
wait_any1 field changed- added
Output schema / $defs / InvocationPayload / properties / defaults_appliedAdded value: +{ + "items": { + "type": "string" + }, + "title": "Defaults Applied", + "type": "array" +}
2 tool updates
v0.17.0- Added
list_invocations - Added
wait_any
8 tool updates
v0.16.1- Changed
cancel_agent3 fields changed- added
Output schema / properties / effortAdded value: +{ + "title": "Effort", + "type": "string" +} - added
Output schema / properties / modelAdded value: +{ + "title": "Model", + "type": "string" +} - added
Output schema / properties / providerAdded value: +{ + "title": "Provider", + "type": "string" +}
- Added
cancel_round - Changed
describe_provider2 fields changed- changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "grok", + "pi" +] - changed
Output schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "grok", + "pi" +]
- Added
open_group - Added
run_round - Changed
start_agent5 fields changed- changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "grok", + "pi" +] - changed
Input schema / properties / provider / descriptionPrevious value: -"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok. Excluded providers: none. Excluded providers are rejected before launch."New value: +"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok, pi. Excluded providers: none. start_agent rejects excluded providers; groups may seat any provider." - added
Output schema / properties / effortAdded value: +{ + "title": "Effort", + "type": "string" +} - added
Output schema / properties / modelAdded value: +{ + "title": "Model", + "type": "string" +} - added
Output schema / properties / providerAdded value: +{ + "title": "Provider", + "type": "string" +}
- Changed
wait_agent3 fields changed- added
Output schema / properties / effortAdded value: +{ + "title": "Effort", + "type": "string" +} - added
Output schema / properties / modelAdded value: +{ + "title": "Model", + "type": "string" +} - added
Output schema / properties / providerAdded value: +{ + "title": "Provider", + "type": "string" +}
- Added
wait_round
3 tool updates
v0.9.0- Changed
cancel_agent1 field changed- changed
Output schema / properties / status / enumPrevious value: -[ - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "timed_out" -]New value: +[ + "running", + "succeeded", + "failed", + "blocked", + "cancelled" +]
- Changed
start_agent2 fields changed- removed
Input schema / properties / timeout_secondsRemoved value: -{ - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 86400, - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Optional total runtime limit in seconds; expiry stops the invocation. Omit or null for no AgentNave deadline; native CLI limits still apply.", - "title": "Timeout Seconds" -} - changed
Output schema / properties / status / enumPrevious value: -[ - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "timed_out" -]New value: +[ + "running", + "succeeded", + "failed", + "blocked", + "cancelled" +]
- Changed
wait_agent2 fields changed- removed
Input schema / properties / wait_timeout_secondsRemoved value: -{ - "default": 600, - "description": "Seconds to wait for this response; expiry leaves the invocation running.", - "exclusiveMinimum": 0, - "maximum": 600, - "title": "Wait Timeout Seconds", - "type": "number" -} - changed
Output schema / properties / status / enumPrevious value: -[ - "running", - "succeeded", - "failed", - "blocked", - "cancelled", - "timed_out" -]New value: +[ + "running", + "succeeded", + "failed", + "blocked", + "cancelled" +]
4 tool updates
v0.7.0- Changed
cancel_agent19 fields changed- added
Output schema / $defs / ActivityPayloadAdded value: +{ + "properties": { + "age_ms": { + "title": "Age Ms", + "type": "integer" + }, + "kind": { + "title": "Kind", + "type": "string" + }, + "state": { + "title": "State", + "type": "string" + }, + "tool_name": { + "title": "Tool Name", + "type": "string" + } + }, + "required": [ + "kind" + ], + "title": "ActivityPayload", + "type": "object" +} - removed
Output schema / $defs / InvocationErrorPayload / properties / detailsRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Details" -} - changed
Output schema / $defs / InvocationErrorPayload / requiredPrevious value: -[ - "code", - "message", - "details" -]New value: +[ + "code", + "message" +] - removed
Output schema / $defs / InvocationResultPayloadRemoved value: -{ - "properties": { - "duration_ms": { - "title": "Duration Ms", - "type": "integer" - }, - "error": { - "anyOf": [ - { - "$ref": "#/$defs/InvocationErrorPayload" - }, - { - "type": "null" - } - ] - }, - "output": { - "title": "Output", - "type": "string" - }, - "provider": { - "$ref": "#/$defs/ProviderName" - }, - "provider_usage": { - "$ref": "#/$defs/ProviderUsagePayload" - }, - "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Session Id" - }, - "status": { - "$ref": "#/$defs/InvocationStatusName" - } - }, - "required": [ - "status", - "provider", - "output", - "session_id", - "provider_usage", - "duration_ms", - "error" - ], - "title": "InvocationResultPayload", - "type": "object" -} - removed
Output schema / $defs / InvocationStatusNameRemoved value: -{ - "enum": [ - "succeeded", - "failed", - "blocked", - "cancelled", - "timed_out" - ], - "type": "string" -} - removed
Output schema / $defs / ProviderNameRemoved value: -{ - "enum": [ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok" - ], - "type": "string" -} - removed
Output schema / $defs / ProviderUsagePayloadRemoved value: -{ - "properties": { - "num_turns": { - "title": "Num Turns", - "type": "integer" - }, - "total_cost_usd": { - "title": "Total Cost Usd", - "type": "number" - } - }, - "title": "ProviderUsagePayload", - "type": "object" -} - added
Output schema / properties / activityAdded value: +{ + "$ref": "#/$defs/ActivityPayload" +} - added
Output schema / properties / elapsed_msAdded value: +{ + "title": "Elapsed Ms", + "type": "integer" +} - added
Output schema / properties / errorAdded value: +{ + "$ref": "#/$defs/InvocationErrorPayload" +} - added
Output schema / properties / outputAdded value: +{ + "title": "Output", + "type": "string" +} - added
Output schema / properties / output_age_msAdded value: +{ + "title": "Output Age Ms", + "type": "integer" +} - added
Output schema / properties / reasonAdded value: +{ + "enum": [ + "started", + "wait_elapsed", + "execution_blocked", + "finished" + ], + "title": "Reason", + "type": "string" +} - removed
Output schema / properties / resultRemoved value: -{ - "$ref": "#/$defs/InvocationResultPayload" -} - added
Output schema / properties / session_idAdded value: +{ + "title": "Session Id", + "type": "string" +} - removed
Output schema / properties / stateRemoved value: -{ - "const": "finished", - "title": "State", - "type": "string" -} - added
Output schema / properties / statusAdded value: +{ + "enum": [ + "running", + "succeeded", + "failed", + "blocked", + "cancelled", + "timed_out" + ], + "title": "Status", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "invocation_id", - "state", - "result" -]New value: +[ + "invocation_id", + "status", + "reason", + "elapsed_ms" +] - changed
Output schema / titlePrevious value: -"CancelAgentPayload"New value: +"InvocationPayload"
- Changed
describe_provider4 fields changed- changed
Input schema / properties / provider / descriptionPrevious value: -"Provider to describe before using start_agent."New value: +"Provider whose permitted status and options to return." - removed
Output schema / properties / defaultsRemoved value: -{ - "additionalProperties": { - "type": "string" - }, - "title": "Defaults", - "type": "object" -} - removed
Output schema / properties / guidanceRemoved value: -{ - "title": "Guidance", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "provider", - "permitted", - "defaults", - "supported_options", - "guidance" -]New value: +[ + "provider", + "permitted", + "supported_options" +]
- Changed
start_agent20 fields changed- changed
Input schema / properties / provider / descriptionPrevious value: -"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok. Excluded providers: none. Exclusions are enforced before an invocation is created. Choose an installed, authenticated permitted CLI; if none is available, report the blocker instead of falling back to an excluded provider."New value: +"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok. Excluded providers: none. Excluded providers are rejected before launch." - changed
Input schema / properties / provider_options / descriptionPrevious value: -"Explicit options for the selected CLI. Call describe_provider(provider) for supported keys and model/effort defaults; user choices override those defaults."New value: +"Explicit options for the selected CLI. Call describe_provider(provider) for supported keys. Omitted options inherit native CLI settings." - added
Input schema / properties / timeout_seconds / anyOfAdded value: +[ + { + "exclusiveMinimum": 0, + "maximum": 86400, + "type": "number" + }, + { + "type": "null" + } +] - changed
Input schema / properties / timeout_seconds / defaultPrevious value: -1800New value: +null - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Total runtime limit in seconds; expiry stops the invocation."New value: +"Optional total runtime limit in seconds; expiry stops the invocation. Omit or null for no AgentNave deadline; native CLI limits still apply." - removed
Input schema / properties / timeout_seconds / exclusiveMinimumRemoved value: -0 - removed
Input schema / properties / timeout_seconds / maximumRemoved value: -86400 - removed
Input schema / properties / timeout_seconds / typeRemoved value: -"number" - added
Output schema / $defsAdded value: +{ + "ActivityPayload": { + "properties": { + "age_ms": { + "title": "Age Ms", + "type": "integer" + }, + "kind": { + "title": "Kind", + "type": "string" + }, + "state": { + "title": "State", + "type": "string" + }, + "tool_name": { + "title": "Tool Name", + "type": "string" + } + }, + "required": [ + "kind" + ], + "title": "ActivityPayload", + "type": "object" + }, + "InvocationErrorPayload": { + "properties": { + "code": { + "title": "Code", + "type": "string" + }, + "message": { + "title": "Message", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "title": "InvocationErrorPayload", + "type": "object" + } +} - added
Output schema / properties / activityAdded value: +{ + "$ref": "#/$defs/ActivityPayload" +} - added
Output schema / properties / elapsed_msAdded value: +{ + "title": "Elapsed Ms", + "type": "integer" +} - added
Output schema / properties / errorAdded value: +{ + "$ref": "#/$defs/InvocationErrorPayload" +} - added
Output schema / properties / outputAdded value: +{ + "title": "Output", + "type": "string" +} - added
Output schema / properties / output_age_msAdded value: +{ + "title": "Output Age Ms", + "type": "integer" +} - added
Output schema / properties / reasonAdded value: +{ + "enum": [ + "started", + "wait_elapsed", + "execution_blocked", + "finished" + ], + "title": "Reason", + "type": "string" +} - added
Output schema / properties / session_idAdded value: +{ + "title": "Session Id", + "type": "string" +} - removed
Output schema / properties / stateRemoved value: -{ - "const": "running", - "title": "State", - "type": "string" -} - added
Output schema / properties / statusAdded value: +{ + "enum": [ + "running", + "succeeded", + "failed", + "blocked", + "cancelled", + "timed_out" + ], + "title": "Status", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "invocation_id", - "state" -]New value: +[ + "invocation_id", + "status", + "reason", + "elapsed_ms" +] - changed
Output schema / titlePrevious value: -"StartAgentPayload"New value: +"InvocationPayload"
- Changed
wait_agent24 fields changed- changed
Input schema / properties / wait_timeout_seconds / defaultPrevious value: -30New value: +600 - changed
Input schema / properties / wait_timeout_seconds / maximumPrevious value: -300New value: +600 - added
Output schema / $defs / ActivityPayloadAdded value: +{ + "properties": { + "age_ms": { + "title": "Age Ms", + "type": "integer" + }, + "kind": { + "title": "Kind", + "type": "string" + }, + "state": { + "title": "State", + "type": "string" + }, + "tool_name": { + "title": "Tool Name", + "type": "string" + } + }, + "required": [ + "kind" + ], + "title": "ActivityPayload", + "type": "object" +} - removed
Output schema / $defs / InvocationErrorPayload / properties / detailsRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Details" -} - changed
Output schema / $defs / InvocationErrorPayload / requiredPrevious value: -[ - "code", - "message", - "details" -]New value: +[ + "code", + "message" +] - removed
Output schema / $defs / InvocationPhaseNameRemoved value: -{ - "enum": [ - "preparing", - "running", - "stopping" - ], - "type": "string" -} - removed
Output schema / $defs / InvocationResultPayloadRemoved value: -{ - "properties": { - "duration_ms": { - "title": "Duration Ms", - "type": "integer" - }, - "error": { - "anyOf": [ - { - "$ref": "#/$defs/InvocationErrorPayload" - }, - { - "type": "null" - } - ] - }, - "output": { - "title": "Output", - "type": "string" - }, - "provider": { - "$ref": "#/$defs/ProviderName" - }, - "provider_usage": { - "$ref": "#/$defs/ProviderUsagePayload" - }, - "session_id": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Session Id" - }, - "status": { - "$ref": "#/$defs/InvocationStatusName" - } - }, - "required": [ - "status", - "provider", - "output", - "session_id", - "provider_usage", - "duration_ms", - "error" - ], - "title": "InvocationResultPayload", - "type": "object" -} - removed
Output schema / $defs / InvocationSnapshotPayloadRemoved value: -{ - "properties": { - "elapsed_ms": { - "title": "Elapsed Ms", - "type": "integer" - }, - "last_event_age_ms": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "title": "Last Event Age Ms" - }, - "phase": { - "$ref": "#/$defs/InvocationPhaseName" - } - }, - "required": [ - "phase", - "elapsed_ms", - "last_event_age_ms" - ], - "title": "InvocationSnapshotPayload", - "type": "object" -} - removed
Output schema / $defs / InvocationStatusNameRemoved value: -{ - "enum": [ - "succeeded", - "failed", - "blocked", - "cancelled", - "timed_out" - ], - "type": "string" -} - removed
Output schema / $defs / ProviderNameRemoved value: -{ - "enum": [ - "antigravity", - "claude", - "codebuddy", - "codex", - "grok" - ], - "type": "string" -} - removed
Output schema / $defs / ProviderUsagePayloadRemoved value: -{ - "properties": { - "num_turns": { - "title": "Num Turns", - "type": "integer" - }, - "total_cost_usd": { - "title": "Total Cost Usd", - "type": "number" - } - }, - "title": "ProviderUsagePayload", - "type": "object" -} - added
Output schema / properties / activityAdded value: +{ + "$ref": "#/$defs/ActivityPayload" +} - added
Output schema / properties / elapsed_msAdded value: +{ + "title": "Elapsed Ms", + "type": "integer" +} - added
Output schema / properties / errorAdded value: +{ + "$ref": "#/$defs/InvocationErrorPayload" +} - added
Output schema / properties / outputAdded value: +{ + "title": "Output", + "type": "string" +} - added
Output schema / properties / output_age_msAdded value: +{ + "title": "Output Age Ms", + "type": "integer" +} - added
Output schema / properties / reasonAdded value: +{ + "enum": [ + "started", + "wait_elapsed", + "execution_blocked", + "finished" + ], + "title": "Reason", + "type": "string" +} - removed
Output schema / properties / resultRemoved value: -{ - "$ref": "#/$defs/InvocationResultPayload" -} - added
Output schema / properties / session_idAdded value: +{ + "title": "Session Id", + "type": "string" +} - removed
Output schema / properties / snapshotRemoved value: -{ - "$ref": "#/$defs/InvocationSnapshotPayload" -} - removed
Output schema / properties / stateRemoved value: -{ - "enum": [ - "running", - "finished" - ], - "title": "State", - "type": "string" -} - added
Output schema / properties / statusAdded value: +{ + "enum": [ + "running", + "succeeded", + "failed", + "blocked", + "cancelled", + "timed_out" + ], + "title": "Status", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "invocation_id", - "state" -]New value: +[ + "invocation_id", + "status", + "reason", + "elapsed_ms" +] - changed
Output schema / titlePrevious value: -"WaitAgentPayload"New value: +"InvocationPayload"
3 tool updates
v0.5.0- Added
describe_provider - Changed
start_agent5 fields changed- changed
Input schema / properties / prompt / descriptionPrevious value: -"Complete, self-contained task for the subagent."New value: +"Complete task, context, constraints, and expected output; the CLI does not inherit this conversation." - changed
Input schema / properties / provider / descriptionPrevious value: -"Local subagent provider to launch."New value: +"CLI requested by the user, not a model ID. Providers permitted by this host configuration: antigravity, claude, codebuddy, codex, grok. Excluded providers: none. Exclusions are enforced before an invocation is created. Choose an installed, authenticated permitted CLI; if none is available, report the blocker instead of falling back to an excluded provider." - changed
Input schema / properties / provider_options / descriptionPrevious value: -"Explicit provider-native options. Omit to inherit the provider's own settings; supported keys depend on the selected provider."New value: +"Explicit options for the selected CLI. Call describe_provider(provider) for supported keys and model/effort defaults; user choices override those defaults." - changed
Input schema / properties / session_id / descriptionPrevious value: -"Provider session ID returned by an earlier finished invocation."New value: +"To continue a conversation, use the session_id returned by a finished invocation of the same provider; omit for a new conversation. Never use an invocation_id here." - changed
Input schema / properties / timeout_seconds / descriptionPrevious value: -"Maximum provider runtime in seconds."New value: +"Total runtime limit in seconds; expiry stops the invocation."
- Changed
wait_agent1 field changed- changed
Input schema / properties / wait_timeout_seconds / descriptionPrevious value: -"Maximum time to wait during this call, in seconds."New value: +"Seconds to wait for this response; expiry leaves the invocation running."
3 tool updates
v0.3.0- Changed
cancel_agent1 field changed- changed
Output schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "grok" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "grok" +]
- Changed
start_agent1 field changed- changed
Input schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "grok" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "grok" +]
- Changed
wait_agent1 field changed- changed
Output schema / $defs / ProviderName / enumPrevious value: -[ - "antigravity", - "claude", - "codebuddy", - "grok" -]New value: +[ + "antigravity", + "claude", + "codebuddy", + "codex", + "grok" +]
3 tool updates
v0.2.0- First observed
cancel_agent - First observed
start_agent - First observed
wait_agent
TDQS
Scored across 9 tools
The tools mostly target distinct orchestration objects and actions: start_agent for CLI tasks, run_round for meetings, decide_answers for held answers, and handover for workspace transfer. Some overlap exists among list, list_members, and read_conversation, and wait spans multiple handle types, but the descriptions provide enough differentiation.
Most compound names follow imperative snake_case verb_noun patterns such as start_agent, list_members, run_round, decide_answers, and read_conversation. However, bare verbs wait/cancel/list and the noun-style handover break the predictable pattern, making it mixed but still readable.
The server exposes 9 tools, which is well within a reasonable range for an orchestration service. Each tool appears to earn its place by covering a distinct lifecycle or control operation, with no obvious redundant tools.
The surface covers task start/wait/cancel/list/read, meeting round creation/continuation, answer decisions, member inspection, and handover. Minor gaps exist, such as no explicit member configuration/update tool and no messaging to active tasks, but some of these appear intentionally out of scope.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Start and manage Reason cloud coding agents, projects and sessions from any MCP client.
Hosted MCP server and Agent Skills for specs, engineering threads, and project memory.
- aXDeprecatedio.github.ax-platform
Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables MCP clients to spawn and control Codex CLI and Claude Code sessions on the host machine, with session management and filesystem access.4MIT
- FlicenseNot gradedqualityCmaintenanceEnables ISLI agents and MCP clients to dispatch natural-language coding and terminal tasks to a locally-installed Claude Code CLI, supporting both one-shot execution and persistent sessions with workspace and security controls.-
- AlicenseNot gradedqualityAmaintenanceEnables any MCP client to launch and manage subagent sessions in installed coding agents like Codex, Claude Code, Grok, and OpenCode, using your existing logins and chosen models.10 npmMIT
- AlicenseAqualityAmaintenanceEnables orchestrator agents to route coding tasks to native CLI worker agents via MCP, providing tools for agent discovery, task submission, waiting, inspection, and cancellation.53MIT