Skip to content

feat(mcp): silo_query + confer_run tools — devagentic-mutations plugin (#56, G2 of devagentic#203)#63

Merged
PowerCreek merged 1 commit into
mainfrom
issue-56-mcp-devagentic-tools
May 23, 2026
Merged

feat(mcp): silo_query + confer_run tools — devagentic-mutations plugin (#56, G2 of devagentic#203)#63
PowerCreek merged 1 commit into
mainfrom
issue-56-mcp-devagentic-tools

Conversation

@PowerCreek

Copy link
Copy Markdown

Partial close of #56. G2 foundation. Follow-up sub-issues filed: #60 (assertOutput), #61 (patchArtifact/readArtifact), #62 (fetchUrl).

Summary

  • New plugin plugins/devagentic-mutations/ with the same shape as devagentic-canvas / devagentic-docs.
  • Two new MCP tools registered via mcp_serve.py::_register_devagentic_mutation_tools:
    • silo_query(name, prompt, role_override?) — wraps querySilo GraphQL field
    • confer_run(user_id, candidate_id) — wraps runConferLoop mutation
  • All transport mirrors existing devagentic-adjacent plugins: same env vars, same X-User-Id auto-binding, same fail-soft contract.

Why

Under devagentic#203 §1.2, worker sessions must call devagentic ops through hermes-native tools — not shell out to python api.py. G2 closes the missing read + confer surfaces (writeDoc + forkContext were already shipped via _register_docs_tools).

Scope decision (partial close)

The original #56 enumerated 6+ tools (querySilo, writeDoc, confer, forkContext, assertOutput, patchArtifact). Discovered during implementation:

Per devagentic#203 broadcast: "don't try to land all four at once" — applying the same principle within G2.

Test plan

  • 12 client unit tests pass (tests/plugins/devagentic-mutations/test_client.py): user_id resolution, empty-args guards, happy paths for both tools, network errors, GraphQL errors, invalid JSON, null-data handling.
  • create_mcp_server() smoke-import succeeds; new tools silo_query + confer_run registered alongside existing canvas_* / doc_* / fork_* (28 tools total).
  • Plugin is additive — no changes to existing client modules — so no regression risk to existing canvas / docs / fork flows.

Notes

  • confer_run requires a kind:finding-candidate doc id, which a fresh worker won't have on day 1. The tool is foundational for established workers running through the Lane F confer-loop; first-day workers will use silo_query + doc_write predominantly.
  • last_error_text() populated on the client to surface actionable diagnostics in MCP error JSON.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant