add tool mcp connects, lists the server’s tools and writes them, name, description and input schema, into agent.json, so the deployed agent never discovers at a cold start. The model sees each as <name>__<tool>, deepwiki__read_wiki_structure here. Every call goes from the agent’s instance straight to the server; the session is kept while the instance is active, and opened again after an eviction or when the server answers 404.
A credential is a secret like any other: the value is read from
.env (or the environment) to list the tools and under dev, and from the platform secret once deployed, so telnyx-acp add secret <NAME> must store it before deploy; validate names a declared secret the project does not have. Deployed, the value is read at every call and never kept; dev reads .env as it starts.
<name>__<tool>, and the model APIs accept function names of at most 64 characters, so add tool mcp and validate refuse a combination that is longer, naming the tool and the room a shorter --name would leave, or --allow to leave it out. Each request to the server is bounded: 15 seconds for each set-up and list request, 30 seconds for each tool call, so one operation can take longer than either; a server that stalls or never closes its stream ends the call with an error naming the host. A tool’s text result is cut at 12,000 characters, with truncated: true. A transport error names the host only; add tool mcp names the URL it was given when it cannot list the server, and a server’s own error text is passed through.
Refresh
--refresh asks each MCP server for its tools again and rewrites the list in agent.json, for a server that gained or changed a tool. With several servers the list gets long; telnyx-acp tools --file tools.json moves it into its own file, and agent.json keeps a reference.