Makes the MCP surface advertise recall as well as it advertised writing, and closes the wiring gap that made project-scoped reads impossible.
Why
search and list_notes dropped the project_id their underlying services already support, so a scoped search was impossible — every query swept all projects and bled unrelated work into the session.
Tool descriptions were mechanical ("Semantic search over the user's notes and tasks") with no trigger telling Claude when to reach for them; the server instructions were all write-discipline and said nothing about searching before answering or starting work.
Changes
search, list_notes: add project_id param, wired to the service.
search, list_notes, list_tasks: trigger-worded descriptions that push passing the active project's id and reserve project_id=0 for a deliberate cross-project sweep.
_INSTRUCTIONS: add a "Reach for Scribe to RECALL, not just to record" block — search before answering/starting, check for an existing ticket before create_task, scope reads to the active project (which doesn't stick on the stateless server).
Paired out-of-band with always-on rule #75 ("Search Scribe first, scoped to the active project") in the FabledSword-family rulebook, and a memory pointer binding this repo to the FabledScribe project (prod id 2 / dev id 3).
Makes the MCP surface advertise *recall* as well as it advertised *writing*, and closes the wiring gap that made project-scoped reads impossible.
## Why
- `search` and `list_notes` dropped the `project_id` their underlying services already support, so a scoped search was impossible — every query swept all projects and bled unrelated work into the session.
- Tool descriptions were mechanical ("Semantic search over the user's notes and tasks") with no trigger telling Claude *when* to reach for them; the server instructions were all write-discipline and said nothing about searching before answering or starting work.
## Changes
- `search`, `list_notes`: add `project_id` param, wired to the service.
- `search`, `list_notes`, `list_tasks`: trigger-worded descriptions that push passing the active project's id and reserve `project_id=0` for a deliberate cross-project sweep.
- `_INSTRUCTIONS`: add a "Reach for Scribe to RECALL, not just to record" block — search before answering/starting, check for an existing ticket before `create_task`, scope reads to the active project (which doesn't stick on the stateless server).
Paired out-of-band with always-on rule #75 ("Search Scribe first, scoped to the active project") in the FabledSword-family rulebook, and a memory pointer binding this repo to the FabledScribe project (prod id 2 / dev id 3).
CI green on dev (run #541) at head `e3c6124`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The MCP surface advertised writing well but recall poorly, and project
scoping had no anchor that survived past enter_project's snapshot:
- search / list_notes dropped the project_id their services already
support, so a scoped search was impossible — every query swept all
projects and bled unrelated work into the session.
- The tool descriptions were mechanical ("Semantic search over the
user's notes and tasks") with no trigger telling Claude WHEN to reach
for them; the server instructions were all write-discipline and said
nothing about searching before answering or starting work.
Changes:
- search, list_notes: add project_id param, wired to the service.
- search, list_notes, list_tasks: trigger-worded descriptions that push
passing the active project's id and reserve project_id=0 for a
deliberate cross-project sweep.
- _INSTRUCTIONS: add a 'Reach for Scribe to RECALL, not just to record'
block — search before answering/starting, check for an existing ticket
before create_task, scope reads to the active project (which does not
stick on the server).
Paired with always-on rule #75 in the FabledSword-family rulebook.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Makes the MCP surface advertise recall as well as it advertised writing, and closes the wiring gap that made project-scoped reads impossible.
Why
searchandlist_notesdropped theproject_idtheir underlying services already support, so a scoped search was impossible — every query swept all projects and bled unrelated work into the session.Changes
search,list_notes: addproject_idparam, wired to the service.search,list_notes,list_tasks: trigger-worded descriptions that push passing the active project's id and reserveproject_id=0for a deliberate cross-project sweep._INSTRUCTIONS: add a "Reach for Scribe to RECALL, not just to record" block — search before answering/starting, check for an existing ticket beforecreate_task, scope reads to the active project (which doesn't stick on the stateless server).Paired out-of-band with always-on rule #75 ("Search Scribe first, scoped to the active project") in the FabledSword-family rulebook, and a memory pointer binding this repo to the FabledScribe project (prod id 2 / dev id 3).
CI green on dev (run #541) at head
e3c6124.🤖 Generated with Claude Code
The MCP surface advertised writing well but recall poorly, and project scoping had no anchor that survived past enter_project's snapshot: - search / list_notes dropped the project_id their services already support, so a scoped search was impossible — every query swept all projects and bled unrelated work into the session. - The tool descriptions were mechanical ("Semantic search over the user's notes and tasks") with no trigger telling Claude WHEN to reach for them; the server instructions were all write-discipline and said nothing about searching before answering or starting work. Changes: - search, list_notes: add project_id param, wired to the service. - search, list_notes, list_tasks: trigger-worded descriptions that push passing the active project's id and reserve project_id=0 for a deliberate cross-project sweep. - _INSTRUCTIONS: add a 'Reach for Scribe to RECALL, not just to record' block — search before answering/starting, check for an existing ticket before create_task, scope reads to the active project (which does not stick on the server). Paired with always-on rule #75 in the FabledSword-family rulebook. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>