Skip to content

Mission: agentchat honours everything an MCP server declares #89

Closed

Description

@panyam

Outcome

Someone points agentchat at an MCP server that uses the extensions chakra says it hosts: server instructions, skills, events and agents, and later MCP Apps and A2A agents. The session behaves the way each spec says a host must, with no glue on the host side. The model is told what the server is for. Skills load only when needed and re-prompt when their content changes. Event hints the server declares take effect. Server agents can be delegated to.

Exercise

make host-exercise

It runs a host.App against a demo server with a scripted model, on both client wires, and prints PASS or FAIL per host obligation (#88). No model or key needed, and CI runs it through make test-examples. make host-exercise-live boots the same server for agentchat and a real model.

What to look at: the table it prints. Known failures are pinned to their tickets in examples/host-exercise/expected.go, and a ticket's fix removes its lines there, so the mission is done when that file is empty.

Done when

make host-exercise passes every check on both wires (expected.go is empty), and the blocked-by list below is closed or moved to another mission explicitly.

Not in this mission

Activity

  1. added a commit that references this issue on Oct 25, 2026
  2. panyam commented on Oct 25, 2026

    @panyam
    OwnerAuthor

    #115 merged. make host-exercise is this mission's exercise: a host.App against a demo server with a scripted model, on both client wires, one PASS/FAIL per host obligation. It closes #88. Progress: [2/8 tickets closed]. Next ready: #50 (no-prefetch and content-bound approval), then #81 (event hints).

    Exercise @ 3a97d29 plus the v0.8.12 sync (#116), since main went stale on mcpkit v0.8.12 again before I could run it: 3 of 5 obligations fail on both wires, all as expected.

    check legacy stateless
    instructions PASS PASS labelled with server "demo"
    no-prefetch FAIL FAIL #50: the default mode reads all 3 SKILL.md files at connect
    skill-rotation FAIL FAIL #50: asked once across both loads, and the second load is refused with size mismatch
    event-hint FAIL FAIL #81: injected raw, event build.finished from demo: {...}, not through the server's template
    agent-delegable PASS PASS delegated and got the child's answer back

    5 check(s) x 2 wire(s), 0 unexpected

    Friction:

  3. panyam commented on Oct 25, 2026

    @panyam
    OwnerAuthor

    #116 merged. mcpkit v0.8.12 pins and a .gitignore line for this exercise's binary. Progress: [2/8 tickets closed]. Next ready: #50.

    Exercise @ cab969e: make host-exercise reports 5 check(s) x 2 wire(s), 0 unexpected, same as the first log. instructions and agent-delegable pass on both wires. no-prefetch and skill-rotation still fail as expected (#50), and so does event-hint (#81).

    Friction: none.

  4. panyam commented on Oct 26, 2026

    @panyam
    OwnerAuthor

    #135 and #136 merged.

    Next ready: #112 (P2, stateless readiness). Also open: #78, #86 and #87, all waiting.

    Exercise @ 653d379: make host-exercise, scripted model, both wires.

    PASS  legacy     instructions     present, labelled with server "demo"
    PASS  stateless  instructions     present, labelled with server "demo"
    PASS  legacy     no-prefetch      no SKILL.md read at connect
    PASS  stateless  no-prefetch      no SKILL.md read at connect
    PASS  legacy     skill-rotation   asked again after the rotation (2 prompts)
    PASS  stateless  skill-rotation   asked again after the rotation (2 prompts)
    PASS  legacy     event-hint       rendered as "build passed on main"
    PASS  stateless  event-hint       rendered as "build passed on main"
    PASS  legacy     agent-delegable  delegated and got the child's answer back
    PASS  stateless  agent-delegable  delegated and got the child's answer back
    
    5 check(s) x 2 wire(s), 0 unexpected
    

    examples/host-exercise/expected.go is now an empty map, which is the first half of this mission's done-when. The second half is the blocked-by list being closed or explicitly moved: #112 is open at P2, and #78, #86 and #87 are waiting.

    Friction: the skill-rotation check had to wait for the host's re-list after the server's list_changed, since that is asynchronous. A load that races it is refused by the digest check and re-lists, which is safe but costs the model a retry.

  5. panyam commented on Oct 26, 2026

    @panyam
    OwnerAuthor

    #138 merged, and panyam/mcpkit#1648 merged.

    Progress: [4/8]. #112 stays open until chakra bumps to an mcpkit release that includes #1648; that bump closes it. No release yet (the latest tag is v0.8.13).

    Exercise @ 33b9540: make host-exercise: 5 check(s) x 2 wire(s), 0 unexpected.

    Beyond the exercise, on the stateless wire the host module now fails only TestAppBootsWithDownOptionalServer, TestBearerAuthReachesTheWire and TestOAuthLoginFlowE2E, the three that #1648 fixes. Against the fix (checked through a local go.work), root, host, surfaces and surfaces/web pass on both wires.

    Friction: none new.

  6. added a commit that references this issue on Oct 26, 2026
  7. panyam commented on Oct 26, 2026

    @panyam
    OwnerAuthor

    #139 merged (#112, which was closed by hand, gets its fix here). chakra is on mcpkit v0.8.14, so a stateless Connect fails for a down or unauthorised server, and /servers and needs-login report it properly. #140 moved the active mission here from #57.

    Progress: [5/8]. Nothing ready: #78 (A2A agents), #86 (sub-agent router) and #87 (MCP Apps view) are all waiting.

    Exercise @ ece41eb: make host-exercise: 5 check(s) x 2 wire(s), 0 unexpected. On v0.8.14 the host and root modules also pass on both wires, the three readiness tests included (checked before the merge). CI runs the legacy wire only.

    This mission's done-when has two halves. make host-exercise passing every check on both wires is met. The other is the blocked-by list being closed or moved to another mission explicitly, which leaves #78, #86 and #87 to decide on.

  8. panyam commented on Oct 26, 2026

    @panyam
    OwnerAuthor

    Closing: done. make host-exercise passes every check on both wires with examples/host-exercise/expected.go empty (#89 (comment)), and the blocked-by list is closed or moved:

    A host connected to a server that declares instructions, skills, events and agents now behaves as each spec says, on both client wires, with no glue on the host side.

    Along the way the host's stateless wire went from nine failing tests to none.

  9. removed
    mission:activeA mission being worked now (one per worktree)
    on Oct 26, 2026
  10. added a commit that references this issue on Oct 26, 2026
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

    missionA user-visible outcome, with an exercisemission_host_completionServes the host_completion mission

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions