API reference / Apps
Add a custom app
Adds a remote MCP server, by the https address of its Streamable HTTP endpoint (SSE servers are refused), and lists its tools at once, 40 at most. With key, Troopy sends it in Authorization as a Bearer token, or in header. A server that asks for a sign-in waits for one: its status is needs_sign_in, and a person opens signIn in a browser. A tool that the server marks read-only runs when a teammate calls it. Each other tool waits for the yes of an owner or admin. A workspace adds 10 apps. Needs an owner or admin.
/api/v1/custom-appsOther ways to call it
troopy custom-apps addBody
application/jsonname*stringIts name, as in Acme CRM. Its id comes from it
At least 2 characters · At most 60 characters
url*stringThe https address of the MCP server, as in https://mcp.acme.example/mcp
At most 500 characters
keystringA key that the server gave you
At least 8 characters · At most 2000 characters
headerstringThe header that carries the key, as in X-API-Key. Without it: Authorization, with Bearer
kindenum<string>openapi (Liquid SaaS): url is a JSON OpenAPI 3 document, and each operation is a tool, on the host of the document
mcpopenapi
Default "mcp"
Response
200 · application/jsondata*object12 properties
slug*stringThe id of the app, made from its name, as in acme_crm
name*stringkind*enum<string>A remote MCP server, or an OpenAPI document (Liquid SaaS)
mcpopenapi
url*stringThe Streamable HTTP address of its MCP server
auth*enum<string>How Troopy signs in: nothing, a key in a header, or the sign-in of the server
nonekeyoauth
status*enum<string>connectedneeds_sign_infailed
error*string | nulltools*array<object>5 properties
name*stringdescription*stringmode*enum<string>free: it runs. ask: it waits for the yes of an owner or admin. off: no teammate calls it
freeaskoff
args*array<string>The top-level arguments of the tool
visitor*string | nullThe argument that takes the email of a visitor of the website. Then the Support agent calls the tool for a visitor that the website proved, and Troopy fills that argument in. Null: the Support agent never calls it
listedAt*string | nullWhen an owner or admin last read its tools
connectedBy*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringconnectedAt*stringISO 8601 date and time
signIn*string | nullThe page that starts the sign-in of the server, while it waits for one. A person opens it