Skip to content

Full teacher journey over MCP: assign_pathway + get_pathway_results (+ teacherNote on build_pathway) #94

Description

@adamstankiewicz

An agent can make teaching artifacts over MCP but can't run a classroom: creation ships (#76's build_pathway, show_widget), in-chat delivery works for the conversational student, but roster assignment and results analysis exist only as app UI. The teacher context-switches out of the conversation for exactly the legs where an agent is most useful.

The three pieces

  1. get_pathway_results(sessionId) — wrap the existing sessionReport aggregation (per-student rows, evidence strips, per-step outcomes — the data layer lands with design: warm-minimal tokens, and the evidence fixes underneath #77) and return structured rows plus a prose summary written for a model reader ("3 of 12 students are stuck on step 2 — all three missed the same misconception"). Privacy posture: default to anonymous ids crossing the host boundary, roster names opt-in — consistent with the identity stance (educator context may reach the edge; keep the default conservative).
  2. assign_pathway(sessionId, students) — wrap /api/assign's child-session logic; return per-student links. Use ownerId (returned by build_pathway since feat: build_pathway over MCP, and a richer widget-to-agent channel #76) as the capability check so only the pathway's creator can assign it.
  3. teacherNote on build_pathway — one-line: runPathway already accepts it; the tool just doesn't surface it.

Why this is the demo

Together these make the full journey conversational — build → assign → monitor → remediate ("give those three a re-teach activity" is get_pathway_results + show_widget). It's the Raina-shaped story: the teacher's copilot running on the same tool surface any tutor uses.

Sequencing

After the current stack (#75#78) merges — depends on #76's tool and #77's aggregation. Coordinate with #92 (SDK transport migration): all of this touches api/mcp/route.ts, so ideally the new tools land on the migrated shared tool-definition module rather than growing the hand-rolled dispatch further.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions