Skip to content
TriedDocs
Integrations

Get app tool schema

Get the argument schema and a ready-to-paste integration_app tool for each action of an app or app type.

GEThttps://api.tried.com.au/get-app-tool-schema

Returns one entry per action with its description, the JSON schema of the arguments the LLM fills in, an example output, and a complete integration_app tool object you can add to an LLM or flow. Pass an app_id to get tools with that app filled in, or an app_type to browse before you create an app.

Request#

Query parameter Type Required Description
app_id string One of app_id or app_type An existing app. Its type is used and its ID is filled into each tool.app_id. Takes precedence over app_type.
app_type string One of app_id or app_type One of cal_com, hubspot, calendly, zendesk, salesforce, dynamics365, gohighlevel, zoho. Each tool.app_id is the placeholder <app_id>.
action string No Return only this action, for example cal_com.book_appointment.

Example request#

curl "https://api.tried.com.au/get-app-tool-schema?app_id=app_0b8e5d7c2f4a6913e5d0b7a2" \
  -H "Authorization: Bearer $TRIED_API_KEY"
const params = new URLSearchParams({ app_id: "app_0b8e5d7c2f4a6913e5d0b7a2" });
const res = await fetch(`https://api.tried.com.au/get-app-tool-schema?${params}`, {
  headers: { Authorization: `Bearer ${process.env.TRIED_API_KEY}` },
});
const schema = await res.json();
import os, requests

res = requests.get(
    "https://api.tried.com.au/get-app-tool-schema",
    headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
    params={"app_id": "app_0b8e5d7c2f4a6913e5d0b7a2"},
)
schema = res.json()

Response#

200 OK

{
  "app_type": "zendesk",
  "app_id": "app_0b8e5d7c2f4a6913e5d0b7a2",
  "tools": [
    {
      "action": "zendesk.create_ticket",
      "description": "Open a Zendesk support ticket for the caller.",
      "parameters": {
        "type": "object",
        "properties": {
          "subject": { "type": "string", "description": "Ticket subject" },
          "description": { "type": "string", "description": "What the caller needs" },
          "name": { "type": "string", "description": "Requester name" },
          "email": { "type": "string", "description": "Requester email" },
          "priority": { "type": "string", "enum": ["low", "normal", "high", "urgent"] }
        },
        "required": ["subject", "description"]
      },
      "output_example": { "ticket": { "id": 101, "status": "new" } },
      "tool": {
        "type": "integration_app",
        "name": "zendesk_create_ticket",
        "description": "Open a Zendesk support ticket for the caller.",
        "app_id": "app_0b8e5d7c2f4a6913e5d0b7a2",
        "action": "zendesk.create_ticket",
        "parameters": {
          "type": "object",
          "properties": {
            "subject": { "type": "string", "description": "Ticket subject" },
            "description": { "type": "string", "description": "What the caller needs" },
            "name": { "type": "string", "description": "Requester name" },
            "email": { "type": "string", "description": "Requester email" },
            "priority": { "type": "string", "enum": ["low", "normal", "high", "urgent"] }
          },
          "required": ["subject", "description"]
        }
      }
    }
  ]
}
Field Type Description
app_id string or null The app you passed, or null when you queried by app_type.
tools[].parameters object JSON schema of the arguments the LLM fills in.
tools[].output_example object Shape of a successful output. Use it to write response_variables and output_selection paths.
tools[].tool object An integration_app tool. The name is the action with the dot replaced by an underscore. You can add static_arguments, response_variables, output_selection and timeout_ms before saving it on an LLM or flow.

Errors#

Status When
400 Neither a valid app_id nor app_type: app_type is one of cal_com, hubspot, calendly, zendesk, salesforce, dynamics365, gohighlevel, zoho. Or action does not belong to the type: <action> is not an action of <app_type>.
401 Missing or invalid API key.
403 The key's IP allowlist or scopes reject the request. This route needs the admin scope.
404 App <id> not found for an unknown app_id.
429 Rate limit exceeded. See Rate limits.

See Errors for the body format.