feat: per-call project/project_id routing on bm_* tools#4
Merged
Conversation
Every bm_* tool now accepts optional `project` (name) and `project_id` (UUID) params. _translate_args layers the override on top of the configured default: project_id > project > provider._project. Only one of the two ever reaches BM, with project_id winning when both are passed — UUID is unambiguous across cloud workspaces, which is the disambiguator BM itself documents in list_memory_projects. Routing properties are added to every entry in TOOL_SCHEMAS via a shared _PROJECT_ROUTING_PROPS constant + post-construction loop, so the param shape stays DRY and a new tool can't be added without inheriting routing automatically. system_prompt_block now mentions cross-project routing so the agent knows to reach for these params when the user names a project that isn't the configured one. Addresses friction documented in "Hermes Basic Memory Cloud Task Experience" — the original failure mode was the agent silently operating against the active Hermes memory project when the user asked for a write to a different cloud project. With this change the agent can route per-call without reconfiguring the plugin. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
groksrc
added a commit
that referenced
this pull request
May 12, 2026
After evaluating bm_import: no new capability over read_file + bm_write (now that #4 added project_id routing). Adding it would burn a tool slot for what's already a clean two-call composition. Documenting the read → write pattern in SKILL.md is the better fix. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every `bm_*` tool now accepts optional `project` (name) and `project_id` (UUID) parameters. `_translate_args` layers the override on top of the configured default: `project_id > project > provider._project`. Only one of the two ever reaches BM, with `project_id` winning when both are passed — UUID is the unambiguous form across cloud workspaces (the disambiguator BM itself documents in `list_memory_projects`).
Routing properties live in a single shared `_PROJECT_ROUTING_PROPS` constant applied to every entry in `TOOL_SCHEMAS` via a post-construction loop, so the param shape stays DRY and a new tool can't be added without inheriting routing automatically. `system_prompt_block` mentions the cross-project capability so the agent reaches for these params when the user names a project that isn't the active one.
Addresses friction documented in "Hermes Basic Memory Cloud Task Experience": the original failure mode was the agent silently operating against the active Hermes memory project when the user asked for a write to a different cloud project (`main` on personal workspace). With this change the agent can route per-call without reconfiguring the plugin.
First of four planned changes from that note. Follow-ups (tracked as separate tasks): `bm_projects` / `bm_workspaces` as agent tools, a `bm_import` tool for file-on-disk → BM-note, and SKILL.md doc updates for the cross-project workflow.
Test plan
🤖 Generated with Claude Code