Files
alkhttp/tasks/adapters/review-001-mcp-tool-fidelity.md
T
glm-5.3-flash 12b35e2c5f docs(tasks): decompose review 001 remediation Units 1-5 into taskgraph tasks
21 review-001 tasks across server/adapters/client/gateway/websocket/infra,
chunked from the 7-unit remediation plan in
docs/reviews/001-initial-implementation-review.md.

- Scope split by mechanism, not one-per-finding: 15 tasks in generation 1
  (parallelizable), 6 sequenced after their file-sharing precursors
- Deliberately deferred until dependent fixes land: projection/doc
  fidelity partial (Unit 6 beyond dependency hygiene), coverage backfills
  (COV-01..07 via in-task acceptance for forward.rs), and per-finding
  minors (OAI-06/07, HY-02/04/06/10/11, CON-08)
- Cross-crate WS-12 (alkcall demux 4 GiB discard alloc) noted for filing
  in alkcall, not here

taskgraph: validate clean, no cycles, 6 generations
2026-08-29 07:10:15 +00:00

2.5 KiB

id, name, status, depends_on, scope, risk, impact, level, tags
id name status depends_on scope risk impact level tags
review-001-mcp-tool-fidelity MCP tool-gateway runtime fidelity (PRJ-07, PRJ-08, PRJ-09, PRJ-10, PRJ-13) pending
review-001-schema-internal-visibility
narrow low component implementation
adapters
review-001
mcp

Description

Review 001 MCP projection findings in src/adapters/to_mcp.rs (the schema-ACL half of the MCP story is review-001-schema-internal-visibility; this task covers the rest of the tool surface):

  • PRJ-07: the search tool advertises an optional substring query filter but call_tool drops arguments entirely (:382) — an LLM passing {"query": "fs"} gets the full unfiltered listing (context waste/overflow in big registries). Honor the filter.
  • PRJ-08: search excludes only Sub, not Pub (:268-274), contradicting ADR-068 ("excludes both"). A discovered Pub op can never be invoked via the call tool — the advertised discovery surface is a lie for the whole Pub class. (The "subscription"/"Sub" match arms are dead — op_type_str only emits lowercase.)
  • PRJ-09: batch item shape {"isError", "output"|"error"} contradicts the tool description ("each shaped like a call result") — fix the description or the shape.
  • PRJ-10: structuredContent passes output through verbatim, so string/array/null outputs produce non-object structuredContent (strict MCP clients may reject; batch returns a top-level array). Wrap or document.
  • PRJ-13: hand-rolled argument errors omit retryable (required by the OpenAPI error schemas, always present on CallError), and a non-string operation reports the misleading "missing required field". Build argument errors in the CallError wire shape.

Acceptance Criteria

  • search respects a query argument (test); Pub ops excluded from results (test)
  • Batch item doc matches the emitted shape (or shape changed to match — one way or the other, tested)
  • Non-object outputs wrapped into objects or documented as an exception; batch shape consistent
  • MCP argument errors carry retryable and truthful messages
  • cargo test --all-features passes

References

  • docs/reviews/001-initial-implementation-review.md (Part F, PRJ-07..PRJ-10, PRJ-13)
  • docs/architecture/decisions/041-mcp-tool-gateway-pattern.md
  • docs/architecture/decisions/068-gateway-publish-endpoint.md

Notes

Agent fills during implementation. Depends on the visibility task because both rework the schema tool in to_mcp.rs.

Summary

Filled on completion.