๐Ÿ”ง Built-in Tools

Available tools for the voice assistant

๐Ÿค–

ROBO CODED โ€” This documentation was made with AI and may not be 100% sane. But the code does work! ๐ŸŽ‰

๐Ÿ”ง Built-in Tools

The SIP AI Assistant includes several built-in tools that the LLM can invoke during conversations.

Tools demo

๐ŸŽฏ How Tools Work

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ ๐Ÿ‘ค User: "Set a timer for 5 minutes"                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 1. ๐ŸŽค Speech โ†’ Text (Whisper)                               โ”‚
โ”‚ 2. ๐Ÿง  LLM recognizes timer request                          โ”‚
โ”‚ 3. ๐Ÿ”ง LLM outputs: [TOOL:SET_TIMER:duration=300]           โ”‚
โ”‚ 4. โš™๏ธ Tool executes, returns result                        โ”‚
โ”‚ 5. ๐Ÿ”Š Assistant speaks: "Timer set for 5 minutes!"         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Tool invocation format:

[TOOL:NAME]
[TOOL:NAME:param1=value1,param2=value2]

๐ŸŒค๏ธ WEATHER

Get current weather conditions from a Tempest weather station.

PropertyValue
NameWEATHER
ParametersNone
RequiresTEMPEST_STATION_ID, TEMPEST_API_TOKEN

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "What's the weather?"
  • "How's the weather outside?"
  • "What's the temperature?"
  • "Is it raining?"

๐Ÿ“ค Example Output

๐Ÿค– "At Storm Lake, as of 9:30 pm, it's 44 degrees with foggy 
    conditions. Wind is calm. Yesterday saw half an inch of rain."

โœจ Features

  • ๐ŸŒก๏ธ Temperature with feels-like
  • ๐Ÿ’ง Humidity and fog detection
  • ๐Ÿ’จ Wind speed, direction, gusts
  • ๐ŸŒง๏ธ Precipitation (current, today, yesterday)
  • โšก Lightning detection with distance
  • โ˜€๏ธ UV index warnings
  • ๐Ÿ“Š Barometric pressure trends

๐Ÿ”ง Configuration

TEMPEST_STATION_ID=12345
TEMPEST_API_TOKEN=your-api-token

โฒ๏ธ SET_TIMER

Set a timer that fires during or after the call.

PropertyValue
NameSET_TIMER
Parametersduration (required), message (optional)

๐Ÿ“‹ Parameters

ParameterTypeRequiredDefaultDescription
durationintegerYes-Duration in seconds
messagestringNo"Your timer is complete"Completion message

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "Set a timer for 5 minutes"
  • "Remind me in 30 seconds"
  • "Set a 2 hour timer for the roast"

๐Ÿ“ค Example Conversation

๐Ÿ‘ค "Set a timer for 10 minutes for my pizza"
๐Ÿค– "Timer set for 10 minutes!"

   โณ ... 10 minutes later ...

๐Ÿค– "Your pizza timer is complete!"

โš™๏ธ Tool Invocation

[TOOL:SET_TIMER:duration=600,message=Pizza is ready!]

โš ๏ธ Limits

  • Maximum duration: 24 hours (configurable via MAX_TIMER_DURATION_HOURS)

๐Ÿ“ž CALLBACK

Schedule a callback - the assistant will call you back later.

PropertyValue
NameCALLBACK
Parametersdelay, message, destination

๐Ÿ“‹ Parameters

ParameterTypeRequiredDefaultDescription
delayintegerNo60Delay in seconds
messagestringNo"This is your callback"Message to speak
destinationstringNoCurrent callerPhone to call

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "Call me back in 30 minutes"
  • "Remind me to check the oven in 20 minutes"
  • "Schedule a callback for 5pm"

๐Ÿ“ค Example Conversation

๐Ÿ‘ค "Call me back in an hour to remind me about my meeting"
๐Ÿค– "I'll call you back in 1 hour!"

   โณ ... 1 hour later ...
   
๐Ÿ“ž Phone rings...
๐Ÿค– "This is your reminder about your meeting!"

๐Ÿ“ด HANGUP

End the current call gracefully.

PropertyValue
NameHANGUP
ParametersNone

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "Goodbye"
  • "Hang up"
  • "End the call"
  • "That's all, thanks"

๐Ÿ“ค Example

๐Ÿ‘ค "Thanks, that's all I needed. Goodbye!"
๐Ÿค– "You're welcome! Have a great day! Goodbye!"
๐Ÿ“ด Call ended

๐Ÿ“‹ STATUS

Check status of pending timers and scheduled callbacks.

PropertyValue
NameSTATUS
ParametersNone

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "What timers do I have?"
  • "Check my callbacks"
  • "What's scheduled?"
  • "Any pending reminders?"

๐Ÿ“ค Example Output

๐Ÿค– "You have 1 timer: 4 minutes remaining for your pizza. 
    You also have a callback scheduled in 45 minutes."

โŒ CANCEL

Cancel pending timers or callbacks.

PropertyValue
NameCANCEL
Parameterstask_type

๐Ÿ“‹ Parameters

ParameterTypeRequiredDefaultDescription
task_typestringNo"all""timer", "callback", or "all"

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "Cancel my timer"
  • "Cancel all timers"
  • "Cancel my callback"
  • "Cancel everything"

๐Ÿ“ค Example

๐Ÿ‘ค "Cancel my timer"
๐Ÿค– "Timer cancelled!"

๐Ÿ• DATETIME

Get the current date and/or time.

PropertyValue
NameDATETIME
Parametersformat, timezone

๐Ÿ“‹ Parameters

ParameterTypeRequiredDefaultDescription
formatstringNo"datetime"Output format
timezonestringNoSystem TZTimezone name

๐ŸŽฏ Format Options

FormatExample Output
time"It's 3:45 PM"
date"Today is Saturday, November 30th, 2025"
datetime"It's Saturday, November 30th at 3:45 PM"
full"It's Saturday, November 30th, 2025 at 3:45:30 PM Pacific Standard Time"

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "What time is it?"
  • "What's today's date?"
  • "What day is it?"

๐Ÿงฎ CALC

Perform mathematical calculations.

PropertyValue
NameCALC
Parametersexpression (required)

๐Ÿ“‹ Parameters

ParameterTypeRequiredDescription
expressionstringYesMath expression

โž• Supported Operations

OperatorDescriptionExample
+Addition5 + 3
-Subtraction10 - 4
*Multiplication6 * 7
/Division15 / 3
//Integer division17 // 5
%Modulo10 % 3
**Exponentiation2 ** 8
()Parentheses(5 + 3) * 2

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "What's 25 times 4?"
  • "Calculate 15% of 200"
  • "What's 144 divided by 12?"

๐Ÿ“ค Example

๐Ÿ‘ค "What's 25 percent of 80?"
๐Ÿค– "25 percent of 80 is 20"

๐Ÿ”’ Safety

  • Uses AST parsing (not eval())
  • Only allows numeric operations
  • No code execution possible

๐Ÿ˜„ JOKE

Tell a random joke.

PropertyValue
NameJOKE
Parameterscategory

๐Ÿ“‹ Parameters

ParameterTypeRequiredDefaultDescription
categorystringNo"general"Joke category

๐ŸŽญ Categories

CategoryDescription
generalGeneral humor
techTech/programming jokes
dadClassic dad jokes

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "Tell me a joke"
  • "Got any dad jokes?"
  • "Tell me a tech joke"

๐Ÿฆœ SIMON_SAYS

Repeat back exactly what the user says.

PropertyValue
NameSIMON_SAYS
Parameterstext (required)

๐Ÿ“‹ Parameters

ParameterTypeRequiredDescription
textstringYesExact text to repeat verbatim

๐Ÿ—ฃ๏ธ Trigger Phrases

  • "Simon says hello world"
  • "Repeat after me: the quick brown fox"
  • "Say this: testing one two three"
  • "Echo: can you hear me?"
  • "Repeat: I love pizza"

๐Ÿ“ค Example Conversation

๐Ÿ‘ค "Simon says the rain in Spain falls mainly on the plain"
๐Ÿค– "the rain in Spain falls mainly on the plain"

๐Ÿ‘ค "Repeat after me: hello my name is Bob"
๐Ÿค– "hello my name is Bob"

๐Ÿ‘ค "Can you say supercalifragilisticexpialidocious?"
๐Ÿค– "supercalifragilisticexpialidocious"

โš™๏ธ Tool Invocation

[TOOL:SIMON_SAYS:text=hello world]
[TOOL:SIMON_SAYS:text=the quick brown fox jumps over the lazy dog]

๐Ÿ’ก Use Cases

  • ๐Ÿงช Testing TTS pronunciation
  • ๐ŸŽค Voice testing and calibration
  • ๐ŸŽฎ Fun games with kids
  • ๐Ÿ“ข Broadcasting specific messages

โš™๏ธ Tool Invocation Reference

The LLM invokes tools using this format:

[TOOL:TOOL_NAME]
[TOOL:TOOL_NAME:param1=value1,param2=value2]

๐Ÿ“ Examples

[TOOL:WEATHER]
[TOOL:SET_TIMER:duration=300,message=Pizza is ready]
[TOOL:CALLBACK:delay=3600,message=Meeting reminder]
[TOOL:CALC:expression=25*4]
[TOOL:DATETIME:format=full,timezone=America/New_York]
[TOOL:CANCEL:task_type=timer]
[TOOL:JOKE:category=dad]

๐Ÿ”Œ Creating Custom Tools

Want to add your own tools? See Creating Plugins.

# Example: Hello World tool
class HelloTool(BaseTool):
    name = "HELLO"
    description = "Say hello"
    
    async def execute(self, params):
        return ToolResult(
            status=ToolStatus.SUCCESS,
            message="Hello, world!"
        )