Repository navigation
feat(mcp)!: split bm_project into one tool per operation - #2068
phernandez wants to merge 2 commits into
Conversation
…and bm_recent One tool per operation instead of a `command` argument (#2030), so each tool declares its own required parameters and read-only hint. The old name is removed with no alias. bm tool mirrors the tools as project-list, project-create and recent. Man pages, skills, plugins, Hermes, OpenClaw, Tau and benchmarks follow the new names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CMYVL4TcbWdXhdvAzxfqjo Signed-off-by: phernandez <paul@basicmachines.co>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ebd93688f8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @tool_app.command("recent") | ||
| def recent( |
There was a problem hiding this comment.
Migrate the CLI integration test to the new recent command
Removing bm tool project leaves test-int/cli/test_tool_commands_integration.py::test_project_recent_uses_the_default_project invoking ["tool", "project", "recent", "--json"]. Running that test confirms it now fails with exit code 2 and No such command 'project', breaking the integration suite. Update the test to invoke bm tool recent so it continues verifying default-project routing through the renamed command.
Useful? React with 👍 / 👎.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CMYVL4TcbWdXhdvAzxfqjo Signed-off-by: phernandez <paul@basicmachines.co>
Why
#2030 moved to option 2: one MCP tool per operation instead of a
commandargument. Chat clients pick and fill grouped tools poorly, and Google's Connected Apps policy treats them as generic dispatchers. This is the first core piece; Cloud'sbm_agentsplit is basic-memory-cloud#3011.What
bm_projectbecomes three tools, each with its own required parameters and hints:bm_project(command="list")bm_project_listbm_project(command="create", ...)bm_project_createname,pathbm_project(command="recent", ...)bm_recentprojectcreateandrecentare gone; the schema enforces them now.bm toolkeeps mirroring the tools one to one:bm tool project-list,project-create,recent.bm-project(3)replaced bybm-project-list(3),bm-project-create(3),bm-recent(3).tools-migration(7)gets a 1.1 CHANGES table.bm_editkeeps itscommand(decided: every command is an edit of one note).bm_schemais split in the next PR in this stack.Cloud follow-up (needed before Cloud re-pins)
The hosted server replaces
bm_projectwith a version that addsinfoandusage. When Cloud pins this, it must registerbm_project_list/bm_project_create/bm_recentfrom core and splitinfo/usageinto their own tools (e.g.bm_cloud_info,bm_usage), with pages.Release
Renaming tools breaks clients that hard-code
bm_project, so this goes out as 1.1.0, not a patch.Verification
just fast-checkcleanjust fast-teston tests/mcp, tests/cli, man page and consumer tests, test-int/mcp, test-int/bughunt_fixesjust package-check-hermes,package-check-skills,package-check-claude-code; OpenClawbun test, typecheck, lint; Taujust check; benchmarksjust test🤖 Generated with Claude Code
https://claude.ai/code/session_01CMYVL4TcbWdXhdvAzxfqjo