Ephemeral tool injection #2016
alshdavid
started this conversation in
Protocol Suggestions
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Issue
Currently, ACP supports tool use through MCP.
While that is useful, it adds a significant amount of complexity to the orchestrator in cases where state cannot be shared between the orchestrator and the MCP server.
Example Use Case
My exact use case is building a headless agent harness orchestrator;
flowchart LR subgraph host [Host Machine] A[Host Orchestrator] end subgraph container [Podman Container] B[Container Orchestrator] --> C C[ACP Server] --> B C -.-> D D[Codebase] -.-> C end A <-.->|stdio| BThe agent needs access to, for example, GitHub to raise a PR or Jira to update a ticket status. I don't pass the container tokens for Github/Jira/etc, instead the
Container Orchestratorexposes tools to the agent harness (ACP server) that enable these actions.Ideally, when spawning the agent in ACP mode, I would define my tools custom tools. This ensures the pipeline from the
ACP Server -> Container Orchestrator -> Host Orchestratoruses the same circuit.flowchart LR B[Container Orchestrator] -->|stdin| C C[ACP Server] -->|stdout| BThe issue with MCP is that MCP servers are either external processes or http servers. This means my
Container Orchestratorneed to, separately, spin up an http server for MCP - which adds a second communication pathway internally and unnecessary complexity.flowchart LR B[Container Orchestrator] -->|stdin| C C[ACP Server] -->|stdout ACP| B C[ACP Server] -->|http MCP| BThat is, if http MCP even works - it's unreliable at best. Worst case scenario I will need to develop a separate CLI tool as an MCP that connects to my Container Orchestrator over http (like you see with pretty much all MCP tools today)
flowchart LR B[Container Orchestrator] -->|stdin| C C[ACP Server] -->|stdout ACP| B C <-->|stdio| D D[MCP Proxy] <-->|http| BProposal
Incorporate ephemeral tool injection modeled after the
codex-cli app-serverimplementation.{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "clientInfo": { "name": "my-custom-harness", "version": "1.0.0" } } }{ "jsonrpc": "2.0", "id": 2, "method": "thread/start", "params": { "dynamic_tools": [ { "name": "adder", "description": "Adds two numbers together and returns the sum.", "inputSchema": { "type": "object", "properties": { "a": { "type": "number", "description": "The first number" }, "a_val": { "type": "number", "description": "First operand" }, "b": { "type": "number", "description": "The second number" } }, "required": ["a", "b"] } } ] } }{ "jsonrpc": "2.0", "id": 3, "method": "turn/start", "params": { "threadId": "thr_abc123", "input": [ { "type": "userMessage", "content": [ { "type": "text", "text": "What is 42 plus 58? Use the adder tool." } ] } ] } }All reactions