You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Plan integration 4: Add MCP discovery and authoring #11
Let an MCP agent discover planning evidence, inspect plans, create and revise plans, and manage lifecycle status through thin adapters over PlanApplication.
Acceptance criteria
Register list_study_plans, get_study_plan, get_planning_interview, create_study_plan, update_study_plan, and set_study_plan_status.
Every tool delegates to PlanApplication and returns its immutable views.
Readiness refusal and domain failures map to useful ToolError responses.
Structured revision is the normal agent mutation path; raw Markdown replacement is not required.
Tool schemas support deterministic discovery and do not expose storage paths or reindex administration.
Status: met on the evidence below. Source: docs/architecture/plan-integration/receipts/issue-closeout-draft-2026-09-16.md, re-verified against main at a5b9f903 (2026-09-18). Legend as on #8.
Acceptance criterion
Met
Evidence
Register the six tools
yes
C: 5a03b094; T: test_mcp_stdio_smoke.py::test_full_handshake_list_tools_and_call (real transport, exactly 32 names, the nine plan tools present)
Every tool delegates to PlanApplication and returns its immutable views
yes
T: test_mcp_plan_tools.py (122 today) with forbid_store under every delegation test
Readiness refusal and domain failures map to useful ToolError responses
Structured revision is the normal agent mutation path; raw Markdown replacement is not required
yes
update_study_plan → RevisePlan over title, topics, target date, energy floor, cadence, notes, milestones, status and, since 2026-09-17, the mission (why, success, constraints, out_of_scope; follow-on item 3b, C: 653e825b); overwrite and raw Markdown are not exposed (D-4, D-9 pins). The draft's row said the mission was Markdown-only; that was true on 2026-09-16 and is not now — docs/agent-install.md lists the mission among what MCP revises (T: test_docs_plan_integration_contract.py::test_agent_install_doc_promises_exactly_what_update_study_plan_revises)
Tool schemas support deterministic discovery and do not expose storage paths or reindex administration
yes
schema pins in test_mcp_plan_tools.py; inventory is exactly the nine + record_plan_learning among 32 (T: test_docs_plan_integration_contract.py::test_plan_tool_constant_is_exactly_the_registry_plan_tools)
DoD. The real stdio handshake lists the tools and calls them — list_courses in the smoke test, the plan tools themselves in the UAT mcp_lifecycle cell (create → activate → evaluate record → milestone → history over real stdio; R: receipts/uat-plan-journeys-a69867bf.redacted.json). Docs: docs/agent-install.md "Study-plan tools over MCP"; agents/mcp/README.md lists all 32, pinned to the registry; S: mcp-server "The studyloop-mcp inventory is published where the harness registration is".
Activity
refactor(mcp): record_plan_learning applies RevisePlan(learning_recor…
test(mcp): RED — six study-plan tools of design §4 (T3.6)
feat(mcp): six study-plan tools as thin adapters over the seam (T3.7)
docs(spec): mcp-server delta — study-plan discovery and authoring tools
docs(mcp): list the study-plan tools an agent can call
docs(plan-integration): tick T3.6/T3.7 with commits, RED evidence and…
docs(council): brief for code review 3 — Phase 3 (#10 ∥ #11 ∥ #13a) at …
test(planning): RED — CreatePlan.answers is a snapshot the caller can…
test(mcp): RED — get_next_action accepts interleave, validated, forwa…
feat(mcp): get_next_action(..., interleave='off') — MCP interleave pa…
docs(closeout): refresh the #7–#15 close-out DRAFT after review 5, th…
NetDevAutomate commentedon Sep 18, 2026
Status: met on the evidence below. Source:
docs/architecture/plan-integration/receipts/issue-closeout-draft-2026-09-16.md, re-verified againstmainata5b9f903(2026-09-18). Legend as on #8.C: 5a03b094;T: test_mcp_stdio_smoke.py::test_full_handshake_list_tools_and_call(real transport, exactly 32 names, the nine plan tools present)T: test_mcp_plan_tools.py(122 today) withforbid_storeunder every delegation testT: test_mcp_plan_tools.py(not_ready:with blockers + pause-or-repair hint;conflict:,invalid:,not_found:,invalid_id:,invalid_milestone:,plan_error:);T: test_plan_journey_combined.py::TestCombinedJourney::test_mcp_refusal_after_a_web_start_is_a_structured_tool_errorupdate_study_plan→RevisePlanover title, topics, target date, energy floor, cadence, notes, milestones, status and, since 2026-09-17, the mission (why,success,constraints,out_of_scope; follow-on item 3b,C: 653e825b);overwriteand raw Markdown are not exposed (D-4, D-9 pins). The draft's row said the mission was Markdown-only; that was true on 2026-09-16 and is not now —docs/agent-install.mdlists the mission among what MCP revises (T: test_docs_plan_integration_contract.py::test_agent_install_doc_promises_exactly_what_update_study_plan_revises)test_mcp_plan_tools.py; inventory is exactly the nine +record_plan_learningamong 32 (T: test_docs_plan_integration_contract.py::test_plan_tool_constant_is_exactly_the_registry_plan_tools)DoD. The real stdio handshake lists the tools and calls them —
list_coursesin the smoke test, the plan tools themselves in the UATmcp_lifecyclecell (create → activate → evaluate record → milestone → history over real stdio;R: receipts/uat-plan-journeys-a69867bf.redacted.json). Docs:docs/agent-install.md"Study-plan tools over MCP";agents/mcp/README.mdlists all 32, pinned to the registry;S: mcp-server"The studyloop-mcp inventory is published where the harness registration is".Landed via #20 (2026-09-17). Closing.