Document and enforce no Ward-specific MCP verbs in ward-mcp #21

Closed
opened 2026-07-14 10:00:05 +00:00 by coilyco-ops · 2 comments
Member

Decision

Go, from coilysiren/inbox#211.

Do not add Ward-specific MCP verbs to ward-mcp or the future agent-guard-mcp. MCP should expose generic tools/resources/prompts derived from guarded capabilities. Ward admin, lifecycle, reload, or control surfaces belong outside MCP unless a later issue explicitly approves a model-facing use case.

Scope

  • Document the MCP boundary rule in ward-mcp docs.
  • Add tests or review checks that discourage hardcoded Ward-specific MCP methods or tools.
  • Keep existing generic MCP operations such as initialize, tools/list, tools/call, resources/list, resources/read, prompts/list, prompts/get, and ping.
  • If operational endpoints are needed, keep them on ordinary HTTP routes and separate auth/control surfaces.

Non-goals

  • Do not remove any existing generic MCP tool projection behavior.
  • Do not decide the admin endpoint shape here; item 7 from inbox#211 still needs a separate up/down after explanation.
  • Do not bundle this with the ward-mcp -> agent-guard-mcp rename.

Parent: coilysiren/inbox#211.

## Decision Go, from coilysiren/inbox#211. Do not add Ward-specific MCP verbs to ward-mcp or the future agent-guard-mcp. MCP should expose generic tools/resources/prompts derived from guarded capabilities. Ward admin, lifecycle, reload, or control surfaces belong outside MCP unless a later issue explicitly approves a model-facing use case. ## Scope - Document the MCP boundary rule in ward-mcp docs. - Add tests or review checks that discourage hardcoded Ward-specific MCP methods or tools. - Keep existing generic MCP operations such as initialize, tools/list, tools/call, resources/list, resources/read, prompts/list, prompts/get, and ping. - If operational endpoints are needed, keep them on ordinary HTTP routes and separate auth/control surfaces. ## Non-goals - Do not remove any existing generic MCP tool projection behavior. - Do not decide the admin endpoint shape here; item 7 from inbox#211 still needs a separate up/down after explanation. - Do not bundle this with the ward-mcp -> agent-guard-mcp rename. Parent: coilysiren/inbox#211.
Author
Member

WARDED_WORKFLOW: reservation-held

reservation details

Holder: launch intent for container engineer-codex-ward-mcp-21 on host kais-macbook-pro-2.local.

Accepted by ward agent --harness codex (reserved 2026-07-14T10:31:37Z). Concurrent ward agent runs are blocked until this intent becomes visible or the intent is released. The stale-intent fallback is still TTL-bounded (3h TTL). --override-reservation overrides.

Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).

run seed context — what this run is carrying (ward#609)
  • Resolved: coilyco-flight-deck/ward-mcp#21 · branch issue-21 · harness codex · workflow merge-remote-main
  • Run: engineer-codex-ward-mcp-21 · ward v0.679.0 · dispatched 2026-07-14T10:31:36Z
  • Comment thread: 0 included in the pre-flight read, 0 stripped (ward's own automated comments).

Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.679.0).

— Codex, via ward agent

<!-- ward-agent-reservation --> WARDED_WORKFLOW: reservation-held <details><summary>reservation details</summary> Holder: launch intent for container `engineer-codex-ward-mcp-21` on host `kais-macbook-pro-2.local`. Accepted by `ward agent --harness codex` (reserved 2026-07-14T10:31:37Z). Concurrent `ward agent` runs are blocked until this intent becomes visible or the intent is released. The stale-intent fallback is still TTL-bounded (3h TTL). `--override-reservation` overrides. **Do not comment on or edit this issue to steer the run while it is reserved.** The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a **new issue, dispatched fresh**. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494). <details><summary>run seed context — what this run is carrying (ward#609)</summary> - **Resolved:** `coilyco-flight-deck/ward-mcp#21` · branch `issue-21` · harness `codex` · workflow `merge-remote-main` - **Run:** `engineer-codex-ward-mcp-21` · ward `v0.679.0` · dispatched `2026-07-14T10:31:36Z` - **Comment thread:** 0 included in the pre-flight read, 0 stripped (ward's own automated comments). Static container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.679.0). </details> </details> <!-- ward-agent-signature --> — Codex, via `ward agent`
Author
Member

WARDED_WORKFLOW: done

details

workflow: pull-request-and-merge; review summary: skipped because review gate skipped by ~/.ward/config.yaml default
retrospective: the merge was straightforward after the upstream MCP SDK refactor; the only surprise was the remote-main race
confidence: high
surprises: origin/main advanced, so I merged it first and fast-forwarded both refs
follow-ups: none

WARDED_WORKFLOW: done ✅ <details><summary>details</summary> workflow: pull-request-and-merge; review summary: skipped because review gate skipped by ~/.ward/config.yaml default retrospective: the merge was straightforward after the upstream MCP SDK refactor; the only surprise was the remote-main race confidence: high surprises: origin/main advanced, so I merged it first and fast-forwarded both refs follow-ups: none </details>
Sign in to join this conversation.
No description provided.