A tool is a function or API that an agent or workflow can call to perform actions, like accessing databases or manipulating data. Syllable provides default system tools that are already built and ready for you to use out of the box. The tools list page shows all of the tools currently available to your organization with 3 tabs:
  • Agent tools: Agent tools are APIs that an agent can use, such as schedule an appointment on behalf of your user, request a prescription refill, or other countless other tasks.
  • Insight tools: Insight tools are APIs that a workflow can use, and follow a series of steps, such as first transcribe, then summarize, then evaluate the call.
  • Services: Services are authentication credentials that multiple tool can use.
tools_agents_list.png

Agent tools

If you want an agent to reference a specific tool during sessions with users, then you need to provide those instructions in the prompt. For example, if you want to provide hangup instructions to your agent, it might look something like: Before a call ends, make sure to always ask user whether they need anything else. If user doesn’t need anything else, use “hangup” tool.

Creating an agent tool

To create an agent tool, click the “New tool” button on the top right of the list screen.
  • Name: The name of the tool is used to reference it elsewhere in Console, including in prompts and agents, so you should pick something that’s easily identifiable. It shouldn’t contain any whitespace.
  • Service: A service is a grouping of tools. You can select any available service here to add your new tool to that service.

Agent tool schema

You define the behavior and capabilities of a tool using the Tool Schema. More details on the structure of the schema are available here. An example schema to call the Open-Meteo API to look up weather information is below. (Note that the value of the “parameters” field must be defined as a JSON Schema per the OpenAI API.)
{
  "type": "endpoint",
  "endpoint": {
    "url": "https://api.open-meteo.com/v1/forecast",
    "method": "get",
    "argumentLocation": "query"
  },
  "tool": {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Get the weather for a city",
      "parameters": {
        "type": "object",
        "properties": {
          "longitude": {
            "type": "number",
            "description": "The longitude of the city"
          },
          "latitude": {
            "type": "number",
            "description": "The latitude of the city"
          }
        },
        "required": [
          "longitude",
          "latitude"
        ]
      }
    }
  },
  "staticParameters": [
    {
      "name": "current",
      "description": "Information to retrieve from the Open-Meteo API, comma-separated",
      "required": true,
      "type": "string",
      "default": "temperature_2m,relative_humidity_2m,precipitation,rain,showers,snowfall"
    }
  ]
}
  • The “endpoint” object gives the agent details on what API endpoint to call and how to pass the parameters (in the body of a POST request).
  • The “tool” object includes a description of the tool, which should be written as instructions to the agent regarding what the tool does. It also includes a “parameters” object, which describes the various parameters that the agent should gather from the user’s input and send to the API endpoint in the “endpoint” object. (In this case, if the user says, for example, “What is the weather in New York City?”, the agent can determine the relevant latitude and longitude from the city name.)
  • The “staticParameters” object also describes parameters that should be sent to the API, but are predetermined at configuration time, rather than gathered by the agent from the user’s input. They can be configured here at the tool level, but can also be overridden at the agent level, so that different agents can use the same tool (by using a prompt that has been linked to that tool), but specify different behavior for that tool. For more information, see the Tool Configuration section.
Note that the name of each parameter (both static and non-static) in the tool definition must match the name of the parameter on the API endpoint side. The “parameters” field is always required. To define a tool that has no parameters, you need to declare an empty “properties” object, like this:
{
  "type": "endpoint",
  "endpoint": {
    "url": "https://official-joke-api.appspot.com/random_joke",
    "method": "get",
    "argument_location": "query"
  },
  "tool": {
    "type": "function",
    "function": {
      "name": "random_joke",
      "description": "Generate a random joke.",
      "parameters": {
        "type": "object",
        "properties": {}
      }
    }
  }
}

Insight Tools

To see instructions on Insight tools, see Workflows.

Services

Services are a centralized place to store authentication credentials to be used by multiple tools. This way, authentication will only need to be configured once and multiple tools can reuse the same service for authentication within a session. tools_services_list.png

Creating a service

To create a service, click “New service”.
  • Name: Name of the service
  • Description (optional): Description of the service
  • Auth type (optional): Authentication type
tools_services_create.png If you are creating a service for authentication, you have 3 options:
  • Basic: This type of authentication requires username and password.
  • Bearer: This type of authentication requires a token.
  • Custom headers: This type of authentication allows multiple custom headers with unique key value pairs.
Note: Once saved, all secret passwords, tokens, authentication credentials are masked for extra security. Syllable does not store these credentials in our system.
  • You will not be able to view these credentials in the platform because we do not save or store them.
  • You cannot generate new credentials in our system, you must generate them yourself in your third-party system and remember to copy paste them back in.
Basic authentication Requires username and password. tools_services_basic.png Bearer authentication Requires token. tools_services_bearer.png Custom headers Allows multiple custom headers. Each auth header must be a unique name. tools_services_custom.png Once your service is created, you can go to a tool and add them as an authentication service.

System tools

The Syllable platform provides system tools already built and ready for you to use out-of-the-box. System agent tools:
  • check_voicemail: Detects if a voicemail or a person is picking up the phone.
  • hangup: Hangs up on the caller.
  • transfer: Transfers a call to a phone number.
  • web_search: Looks up information from a website.
  • dtmf: Enables DTMF input.
System insight tools:
  • summary-tool: Summarizes and assigns a rating for a session.
System service:
  • default-v1: Default service categorization to group tools within an organization.

DTMF

Dual-Tone Multi-Frequency (DTMF), is a signaling system used in telecommunications where each button on a telephone keypad, when pressed, generates a unique combination of two audio tones. The DTMF tool in the Syllable platform enables your AI Agent to navigate touch-tone phone systems by transmitting RFC 4733 compliant DTMF tones. This functionality is particularly valuable for outbound use cases where your agent may reach IVRs during outreach such as marketing, surveys, or sales calls. When combined with voice-based IVR navigation, it equips your AI Agent with the full range of capabilities needed to operate effectively in outbound scenarios. To learn more, see our blog post, How to add the DTMF tool to your agents.
  "type": "action",
  "tool": {
    "type": "function",
    "function": {
      "name": "dtmf",
      "description": "Tool for dialing DTMF digits on a call.",
      "parameters": {
        "type": "object",
        "properties": {
          "digits": {
            "type": "string",
            "description": "A string containing the DTMF digits being dialed."
          }
        },
        "required": [
          "digits"
        ]
      }
    }
  },
  "endpoint": null,
  "defaults": null,
  "staticParameters": null,
  "result": null,
  "options": null
}```
To learn more, see our blog post, How to add the DTMF tool to your agents.