Two issues
- spoke "send my wife a message" misheard
- load skill not caught by app- this should go back to llm instead of leaking into chat.
You: sand my wife a message
Jandal:
[Thinking]
The user wants to send a message to their wife.
I need to check the available tools to see if there is a function for sending messages.
The available tools are: convert_currency, get_system_info, get_weather, query_wikipedia, run_intent, save_memory, search_memory.
The run_intent tool is for performing native Android device actions like alarms, calendar, media, navigation, contacts, and system toggles. Sending a message is a native Android action.
I should use run_intent with an appropriate intent_name and parameters.
The intent name for sending a message is likely related to SMS or messaging. I should first try to load the skill for run_intent to see the available intents and parameters, as per the instructions: "Call loadSkill first before using this to learn available intents for the skill you need."
However, the prompt says: "Use native tools directly whenever the right tool and required arguments are obvious."
If I assume the intent name is send_sms or similar, I might be guessing.
The instructions also say: "If you are unsure about parameters or need gateway-specific rules, call load_skill first, then follow its instructions."
Since I don't know the exact intent name or parameters for sending a message, I must call load_skill for run_intent.
[End Thinking]
[Tool Call: load_skill — success]
Request: {"name":"load_skill","arguments":{"skill_name":"run_intent"}}
Result: run_intent: Perform a native Android device action.
Parameters (pass as JSON in the 'parameters' argument):
- intent_name (required, string): The action to perform.
Available intents:
FLASHLIGHT:
toggle_flashlight_on, toggle_flashlight_off — No params
COMMUNICATION:
send_email — params: contact, subject, body
send_sms — params: contact, message
make_call — params: contact
SCHEDULING:
set_alarm — params: time ("10pm", "9:30am"), day (optional: "tomorrow", "monday"), label (optional)
set_timer — params: duration_seconds ("180" for 3 min), label (optional)
create_calendar_event — params: title, date (pass relative terms as-is: "tomorrow", "next thursday", "this friday"; or YYYY-MM-DD for explicit dates), time (HH:MM), duration_minutes (optional), description (optional), attendees (optional, comma-separated contact names)
save_important_date — params: label, date (e.g. "15 March" or "22 June 2018")
list_important_dates — no params
remove_important_date — params: label
CALCULATOR / CONVERSION:
calculate_arithmetic — params: expression (calculator expression or simple arithmetic phrase)
convert_units — params: value, from_unit, to_unit (supported common units across length, mass, volume, temperature, and speed)
convert_cooking_measure — params: amount, from_unit, ingredient, to_unit (ingredient-aware cooking conversion for volume↔mass and ingredient-qualified kitchen-unit conversions; defaults to grams when the user asks what something weighs)
convert_currency — params: amount, from_currency, to_currency (latest ECB-backed rates via Frankfurter; not real-time)
SYSTEM TOGGLES:
toggle_dnd_on, toggle_dnd_off — No params
toggle_wifi — params: state ("on" or "off")
toggle_bluetooth — params: state ("on" or "off")
toggle_airplane_mode — params: state ("on" or "off")
toggle_hotspot — params: state ("on" or "off")
VOLUME:
set_volume — params: value (0-100 or 1-10), is_percent ("true" if 0-100, "false" if 1-10)
MEDIA PLAYBACK:
play_media — params: query (song name), artist (optional)
play_media_album — params: album, artist (optional)
play_media_playlist — params: playlist
play_youtube — params: query
play_spotify — params: query
play_plexamp — params: query
play_youtube_music — params: query
play_netflix — params: query
play_plex — params: title
NAVIGATION:
navigate_to — params: destination
find_nearby — params: query
APPS:
open_app — params: app_name
INFO QUERIES:
get_battery, get_time, get_date — No params
NOTES:
create_note — params: content (the text to record as a note or voice memo)
list_notes — no params (returns a formatted list of saved notes)
LISTS:
create_list — params: list_name (required)
add_to_list — params: item (required), list_name (required)
Rules:
Alarm rule: whenever the user says 'set alarm', 'set an alarm', 'alarm for', 'alarm at',
'wake me up at', or 'remind me at [specific clock time]' — call runIntent
with intentName=set_alarm. Pass time EXACTLY as user said (e.g. time:"10pm").
'Remind me at [specific time]' is an alarm (set_alarm).
If the user specifies a day (e.g. 'tomorrow', 'next Monday'), include
day=<day_value> passing it exactly as said (e.g. day:"tomorrow", day:"monday").
NEVER output alarm confirmation text — only the tool call.
NOTE: 'remind me in X minutes' is a timer (set_timer), NOT an alarm.
Calendar rule: 'add calendar entry', 'create calendar event', 'add event',
'schedule [topic] on [date]', 'set up a meeting', 'block time on my calendar',
'put [X] in my calendar' → runIntent with intentName=create_calendar_event.
Pass relative dates as-is ONLY for these supported forms: "tomorrow", "next ", "this ".
Note: 'this ' resolves to today if today is that day, otherwise next occurrence.
For anything else (e.g. 'the day after tomorrow', 'next week'), convert to YYYY-MM-DD.
Only use YYYY-MM-DD if the user stated an explicit date or an unsupported relative form. Pass time as HH:MM (24h).
NEVER confirm event was created without calling the tool.
'remind me in X minutes/seconds' is set_timer, NOT create_calendar_event.
DND rule: 'turn on do not disturb', 'enable DND', 'silence notifications' →
runIntent with intentName=toggle_dnd_on.
'turn off do not disturb', 'disable DND', 'allow notifications again' →
runIntent with intentName=toggle_dnd_off.
If the app needs permission, it will open the settings page automatically.
Volume rule: 'set volume to 50%', 'volume 7' → runIntent with intentName=set_volume.
If user says percentage (0-100), set is_percent="true". If 1-10, set is_percent="false".
Calculator rule: for arithmetic or calculator-style questions, ALWAYS call
runIntent with intentName=calculate_arithmetic instead of doing the math yourself.
Pass the math in expression exactly as symbols when already present (e.g. '245 * 17'),
or as a simple phrase the evaluator understands (e.g. '18.5% of 240').
Unit-conversion rule: for supported deterministic physical unit conversions, call runIntent with
intentName=convert_units instead of doing the conversion yourself.
Pass value as a decimal string and pass explicit normalized units in from_unit/to_unit
such as m, yd, km, mi, mg, g, kg, oz, lb, mL, L, tsp, tbsp, cups, gallons, celsius, fahrenheit, kelvin, m/s, mph, or km/h.
Cooking-conversion rule: for ingredient-aware cooking conversion questions, ALWAYS call runIntent with intentName=convert_cooking_measure.
Pass amount as a decimal string, pass explicit mass or volume units in from_unit/to_unit, and include ingredient exactly as the user said it.
Use this for ingredient-qualified cooking phrases like 3 tbsp butter → grams, 400 g flour → cups, 2 gallons milk → kilogrammes, or how much 2 gallons milk weighs in pounds.
If an ingredient is mentioned but the request is still plain same-category physical unit math outside the cooking path — for example 3 lb flour → grams, 8 oz flour → grams, or 2 gallons milk → liters — keep using convert_units. Do NOT invent cooking densities. The native path uses a small built-in ingredient table and will fail clearly if the ingredient is unsupported.
Currency-conversion rule: for exchange-rate questions, ALWAYS call runIntent with intentName=convert_currency.
Pass amount as a decimal string and pass explicit currency codes or names in from_currency/to_currency
such as AUD, NZD, USD, EUR, or Australian dollars → New Zealand dollars.
Do NOT invent, estimate, or claim real-time exchange rates in model text. The native path will return the latest available ECB-backed rate date and fail closed if rates are unavailable or too stale.
Media rule: For music playback, use play_media with query (song name) and artist.
For albums, use play_media_album. For playlists, use play_media_playlist.
For YouTube/Spotify/Netflix/Plex, use the corresponding intent with query parameter.
Navigation rule: 'navigate to X', 'directions to X' → navigate_to with destination.
'find X nearby', 'where is nearest X' → find_nearby with query.
Call rule: 'call X', 'phone X', 'dial X' → make_call with contact name.
Note rule: 'write a note', 'create a note about X', 'voice memo about X', 'add a note X', 'note to self: X', 'save a memo about X' → runIntent with intentName=create_note, parameters='{"content":"X"}'.
'Show my notes', 'list my notes', 'what notes do I have', 'what notes do you have saved', 'do I have any notes', 'my notes' → runIntent with intentName=list_notes.
CRITICAL: NEVER use search_memory to answer questions about notes. Notes are stored separately from memories and MUST be retrieved with list_notes. search_memory is for personal facts and preferences only.
List rule: 'create a list called X', 'add a list called X', 'make a shopping list' → runIntent with intentName=create_list, parameters='{"list_name":"X"}'.
'Add X to my shopping list', 'put X on the grocery list' → runIntent with intentName=add_to_list, parameters='{"item":"X","list_name":"shopping"}'.
Examples:
Flashlight on → runIntent(intentName="toggle_flashlight_on", parameters="{}")
Flashlight off → runIntent(intentName="toggle_flashlight_off", parameters="{}")
Send email to John → runIntent(intentName="send_email", parameters='{"contact":"John","subject":"Hi","body":"Text"}')
Send SMS → runIntent(intentName="send_sms", parameters='{"contact":"Mom","message":"On my way"}')
Call Dad → runIntent(intentName="make_call", parameters='{"contact":"Dad"}')
Set alarm 10pm → runIntent(intentName="set_alarm", parameters='{"time":"10pm"}')
Set alarm 9pm called dinner → runIntent(intentName="set_alarm", parameters='{"time":"9pm","label":"dinner"}')
Set alarm Monday 7am → runIntent(intentName="set_alarm", parameters='{"time":"7am","day":"monday"}')
Set timer 3min → runIntent(intentName="set_timer", parameters='{"duration_seconds":"180"}')
Calendar event (explicit date) → runIntent(intentName="create_calendar_event", parameters='{"title":"Lunch","date":"2026-04-15","time":"12:30"}')
Calendar event (relative date) → runIntent(intentName="create_calendar_event", parameters='{"title":"Cancel MightyApe","date":"next thursday","time":"16:00"}')
Calendar with attendees → runIntent(intentName="create_calendar_event", parameters='{"title":"Dinner","date":"friday","time":"19:00","attendees":"Sarah,John"}')
Save important date → runIntent(intentName="save_important_date", parameters='{"label":"mum's birthday","date":"15 March"}')
List important dates → runIntent(intentName="list_important_dates", parameters='{}')
Remove important date → runIntent(intentName="remove_important_date", parameters='{"label":"mum's birthday"}')
Calculator → runIntent(intentName="calculate_arithmetic", parameters='{"expression":"18.5% of 240"}')
Math helpers → runIntent(intentName="calculate_arithmetic", parameters='{"expression":"round(sqrt((25^2)) + abs(-2.6) + (10 % 3), 2)"}')
Unit conversion → runIntent(intentName="convert_units", parameters='{"value":"100","from_unit":"m","to_unit":"yards"}')
Cooking conversion → runIntent(intentName="convert_cooking_measure", parameters='{"amount":"3","from_unit":"tbsp","ingredient":"butter","to_unit":"g"}')
Currency conversion → runIntent(intentName="convert_currency", parameters='{"amount":"100","from_currency":"AUD","to_currency":"NZD"}')
Turn on DND → runIntent(intentName="toggle_dnd_on", parameters="{}")
Enable Wi-Fi → runIntent(intentName="toggle_wifi", parameters='{"state":"on"}')
Turn off Bluetooth → runIntent(intentName="toggle_bluetooth", parameters='{"state":"off"}')
Set volume to 50% → runIntent(intentName="set_volume", parameters='{"value":"50","is_percent":"true"}')
Play Bohemian Rhapsody → runIntent(intentName="play_media", parameters='{"query":"Bohemian Rhapsody","artist":"Queen"}')
Play Abbey Road album → runIntent(intentName="play_media_album", parameters='{"album":"Abbey Road","artist":"The Beatles"}')
Play workout playlist → runIntent(intentName="play_media_playlist", parameters='{"playlist":"Workout Mix"}')
Play cat videos on YouTube → runIntent(intentName="play_youtube", parameters='{"query":"cat videos"}')
Navigate to airport → runIntent(intentName="navigate_to", parameters='{"destination":"airport"}')
Find coffee nearby → runIntent(intentName="find_nearby", parameters='{"query":"coffee"}')
Open Spotify → runIntent(intentName="open_app", parameters='{"app_name":"Spotify"}')
Get battery → runIntent(intentName="get_battery", parameters="{}")
What time is it → runIntent(intentName="get_time", parameters="{}")
Create a note about milk → runIntent(intentName="create_note", parameters='{"content":"milk"}')
Voice memo about the meeting → runIntent(intentName="create_note", parameters='{"content":"about the meeting"}')
Show my notes → runIntent(intentName="list_notes", parameters="{}")
Add a list called shopping → runIntent(intentName="create_list", parameters='{"list_name":"shopping"}')
Create a groceries list → runIntent(intentName="create_list", parameters='{"list_name":"groceries"}')
Add milk to my shopping list → runIntent(intentName="add_to_list", parameters='{"item":"milk","list_name":"shopping"}')
[End Tool Call]
run_intent: Perform a native Android device action.
Parameters (pass as JSON in the 'parameters' argument):
- intent_name (required, string): The action to perform.
Available intents:
FLASHLIGHT:
toggle_flashlight_on, toggle_flashlight_off — No params
COMMUNICATION:
send_email — params: contact, subject, body
send_sms — params: contact, message
make_call — params: contact
SCHEDULING:
set_alarm — params: time ("10pm", "9:30am"), day (optional: "tomorrow", "monday"), label (optional)
set_timer — params: duration_seconds ("180" for 3 min), label (optional)
create_calendar_event — params: title, date (pass relative terms as-is: "tomorrow", "next thursday", "this friday"; or YYYY-MM-DD for explicit dates), time (HH:MM), duration_minutes (optional), description (optional), attendees (optional, comma-separated contact names)
save_important_date — params: label, date (e.g. "15 March" or "22 June 2018")
list_important_dates — no params
remove_important_date — params: label
CALCULATOR / CONVERSION:
calculate_arithmetic — params: expression (calculator expression or simple arithmetic phrase)
convert_units — params: value, from_unit, to_unit (supported common units across length, mass, volume, temperature, and speed)
convert_cooking_measure — params: amount, from_unit, ingredient, to_unit (ingredient-aware cooking conversion for volume↔mass and ingredient-qualified kitchen-unit conversions; defaults to grams when the user asks what something weighs)
convert_currency — params: amount, from_currency, to_currency (latest ECB-backed rates via Frankfurter; not real-time)
SYSTEM TOGGLES:
toggle_dnd_on, toggle_dnd_off — No params
toggle_wifi — params: state ("on" or "off")
toggle_bluetooth — params: state ("on" or "off")
toggle_airplane_mode — params: state ("on" or "off")
toggle_hotspot — params: state ("on" or "off")
VOLUME:
set_volume — params: value (0-100 or 1-10), is_percent ("true" if 0-100, "false" if 1-10)
MEDIA PLAYBACK:
play_media — params: query (song name), artist (optional)
play_media_album — params: album, artist (optional)
play_media_playlist — params: playlist
play_youtube — params: query
play_spotify — params: query
play_plexamp — params: query
play_youtube_music — params: query
play_netflix — params: query
play_plex — params: title
NAVIGATION:
navigate_to — params: destination
find_nearby — params: query
APPS:
open_app — params: app_name
INFO QUERIES:
get_battery, get_time, get_date — No params
NOTES:
create_note — params: content (the text to record as a note or voice memo)
list_notes — no params (returns a formatted list of saved notes)
LISTS:
create_list — params: list_name (required)
add_to_list — params: item (required), list_name (required)
Rules:
Alarm rule: whenever the user says 'set alarm', 'set an alarm', 'alarm for', 'alarm at',
'wake me up at', or 'remind me at [specific clock time]' — call runIntent
with intentName=set_alarm. Pass time EXACTLY as user said (e.g. time:"10pm").
'Remind me at [specific time]' is an alarm (set_alarm).
If the user specifies a day (e.g. 'tomorrow', 'next Monday'), include
day=<day_value> passing it exactly as said (e.g. day:"tomorrow", day:"monday").
NEVER output alarm confirmation text — only the tool call.
NOTE: 'remind me in X minutes' is a timer (set_timer), NOT an alarm.
Calendar rule: 'add calendar entry', 'create calendar event', 'add event',
'schedule [topic] on [date]', 'set up a meeting', 'block time on my calendar',
'put [X] in my calendar' → runIntent with intentName=create_calendar_event.
Pass relative dates as-is ONLY for these supported forms: "tomorrow", "next ", "this ".
Note: 'this ' resolves to today if today is that day, otherwise next occurrence.
For anything else (e.g. 'the day after tomorrow', 'next week'), convert to YYYY-MM-DD.
Only use YYYY-MM-DD if the user stated an explicit date or an unsupported relative form. Pass time as HH:MM (24h).
NEVER confirm event was created without calling the tool.
'remind me in X minutes/seconds' is set_timer, NOT create_calendar_event.
DND rule: 'turn on do not disturb', 'enable DND', 'silence notifications' →
runIntent with intentName=toggle_dnd_on.
'turn off do not disturb', 'disable DND', 'allow notifications again' →
runIntent with intentName=toggle_dnd_off.
If the app needs permission, it will open the settings page automatically.
Volume rule: 'set volume to 50%', 'volume 7' → runIntent with intentName=set_volume.
If user says percentage (0-100), set is_percent="true". If 1-10, set is_percent="false".
Calculator rule: for arithmetic or calculator-style questions, ALWAYS call
runIntent with intentName=calculate_arithmetic instead of doing the math yourself.
Pass the math in expression exactly as symbols when already present (e.g. '245 * 17'),
or as a simple phrase the evaluator understands (e.g. '18.5% of 240').
Unit-conversion rule: for supported deterministic physical unit conversions, call runIntent with
intentName=convert_units instead of doing the conversion yourself.
Pass value as a decimal string and pass explicit normalized units in from_unit/to_unit
such as m, yd, km, mi, mg, g, kg, oz, lb, mL, L, tsp, tbsp, cups, gallons, celsius, fahrenheit, kelvin, m/s, mph, or km/h.
Cooking-conversion rule: for ingredient-aware cooking conversion questions, ALWAYS call runIntent with intentName=convert_cooking_measure.
Pass amount as a decimal string, pass explicit mass or volume units in from_unit/to_unit, and include ingredient exactly as the user said it.
Use this for ingredient-qualified cooking phrases like 3 tbsp butter → grams, 400 g flour → cups, 2 gallons milk → kilogrammes, or how much 2 gallons milk weighs in pounds.
If an ingredient is mentioned but the request is still plain same-category physical unit math outside the cooking path — for example 3 lb flour → grams, 8 oz flour → grams, or 2 gallons milk → liters — keep using convert_units. Do NOT invent cooking densities. The native path uses a small built-in ingredient table and will fail clearly if the ingredient is unsupported.
Currency-conversion rule: for exchange-rate questions, ALWAYS call runIntent with intentName=convert_currency.
Pass amount as a decimal string and pass explicit currency codes or names in from_currency/to_currency
such as AUD, NZD, USD, EUR, or Australian dollars → New Zealand dollars.
Do NOT invent, estimate, or claim real-time exchange rates in model text. The native path will return the latest available ECB-backed rate date and fail closed if rates are unavailable or too stale.
Media rule: For music playback, use play_media with query (song name) and artist.
For albums, use play_media_album. For playlists, use play_media_playlist.
For YouTube/Spotify/Netflix/Plex, use the corresponding intent with query parameter.
Navigation rule: 'navigate to X', 'directions to X' → navigate_to with destination.
'find X nearby', 'where is nearest X' → find_nearby with query.
Call rule: 'call X', 'phone X', 'dial X' → make_call with contact name.
Note rule: 'write a note', 'create a note about X', 'voice memo about X', 'add a note X', 'note to self: X', 'save a memo about X' → runIntent with intentName=create_note, parameters='"content":"X"'.
'Show my notes', 'list my notes', 'what notes do I have', 'what notes do you have saved', 'do I have any notes', 'my notes' → runIntent with intentName=list_notes.
CRITICAL: NEVER use search_memory to answer questions about notes. Notes are stored separately from memories and MUST be retrieved with list_notes. search_memory is for personal facts and preferences only.
List rule: 'create a list called X', 'add a list called X', 'make a shopping list' → runIntent with intentName=create_list, parameters='"list_name":"X"'.
'Add X to my shopping list', 'put X on the grocery list' → runIntent with intentName=add_to_list, parameters='"item":"X","list_name":"shopping"'.
Examples:
Flashlight on → runIntent(intentName="toggle_flashlight_on", parameters="")
Flashlight off → runIntent(intentName="toggle_flashlight_off", parameters="")
Send email to John → runIntent(intentName="send_email", parameters='"contact":"John","subject":"Hi","body":"Text"')
Send SMS → runIntent(intentName="send_sms", parameters='"contact":"Mom","message":"On my way"')
Call Dad → runIntent(intentName="make_call", parameters='"contact":"Dad"')
Set alarm 10pm → runIntent(intentName="set_alarm", parameters='"time":"10pm"')
Set alarm 9pm called dinner → runIntent(intentName="set_alarm", parameters='"time":"9pm","label":"dinner"')
Set alarm Monday 7am → runIntent(intentName="set_alarm", parameters='"time":"7am","day":"monday"')
Set timer 3min → runIntent(intentName="set_timer", parameters='"duration_seconds":"180"')
Calendar event (explicit date) → runIntent(intentName="create_calendar_event", parameters='"title":"Lunch","date":"2026-04-15","time":"12:30"')
Calendar event (relative date) → runIntent(intentName="create_calendar_event", parameters='"title":"Cancel MightyApe","date":"next thursday","time":"16:00"')
Calendar with attendees → runIntent(intentName="create_calendar_event", parameters='"title":"Dinner","date":"friday","time":"19:00","attendees":"Sarah,John"')
Save important date → runIntent(intentName="save_important_date", parameters='"label":"mum's birthday","date":"15 March"')
List important dates → runIntent(intentName="list_important_dates", parameters='')
Remove important date → runIntent(intentName="remove_important_date", parameters='"label":"mum's birthday"')
Calculator → runIntent(intentName="calculate_arithmetic", parameters='"expression":"18.5% of 240"')
Math helpers → runIntent(intentName="calculate_arithmetic", parameters='"expression":"round(sqrt((25²)) + abs(-2.6) + (10 % 3), 2)"')
Unit conversion → runIntent(intentName="convert_units", parameters='"value":"100","from_unit":"m","to_unit":"yards"')
Cooking conversion → runIntent(intentName="convert_cooking_measure", parameters='"amount":"3","from_unit":"tbsp","ingredient":"butter","to_unit":"g"')
Currency conversion → runIntent(intentName="convert_currency", parameters='"amount":"100","from_currency":"AUD","to_currency":"NZD"')
Turn on DND → runIntent(intentName="toggle_dnd_on", parameters="")
Enable Wi-Fi → runIntent(intentName="toggle_wifi", parameters='"state":"on"')
Turn off Bluetooth → runIntent(intentName="toggle_bluetooth", parameters='"state":"off"')
Set volume to 50% → runIntent(intentName="set_volume", parameters='"value":"50","is_percent":"true"')
Play Bohemian Rhapsody → runIntent(intentName="play_media", parameters='"query":"Bohemian Rhapsody","artist":"Queen"')
Play Abbey Road album → runIntent(intentName="play_media_album", parameters='"album":"Abbey Road","artist":"The Beatles"')
Play workout playlist → runIntent(intentName="play_media_playlist", parameters='"playlist":"Workout Mix"')
Play cat videos on YouTube → runIntent(intentName="play_youtube", parameters='"query":"cat videos"')
Navigate to airport → runIntent(intentName="navigate_to", parameters='"destination":"airport"')
Find coffee nearby → runIntent(intentName="find_nearby", parameters='"query":"coffee"')
Open Spotify → runIntent(intentName="open_app", parameters='"app_name":"Spotify"')
Get battery → runIntent(intentName="get_battery", parameters="")
What time is it → runIntent(intentName="get_time", parameters="")
Create a note about milk → runIntent(intentName="create_note", parameters='"content":"milk"')
Voice memo about the meeting → runIntent(intentName="create_note", parameters='"content":"about the meeting"')
Show my notes → runIntent(intentName="list_notes", parameters="")
Add a list called shopping → runIntent(intentName="create_list", parameters='"list_name":"shopping"')
Create a groceries list → runIntent(intentName="create_list", parameters='"list_name":"groceries"')
Add milk to my shopping list → runIntent(intentName="add_to_list", parameters='"item":"milk","list_name":"shopping"')
Two issues
You: sand my wife a message
Jandal:
[Thinking]
The user wants to send a message to their wife.
I need to check the available tools to see if there is a function for sending messages.
The available tools are:
convert_currency,get_system_info,get_weather,query_wikipedia,run_intent,save_memory,search_memory.The
run_intenttool is for performing native Android device actions like alarms, calendar, media, navigation, contacts, and system toggles. Sending a message is a native Android action.I should use
run_intentwith an appropriateintent_nameandparameters.The intent name for sending a message is likely related to SMS or messaging. I should first try to load the skill for
run_intentto see the available intents and parameters, as per the instructions: "Call loadSkill first before using this to learn available intents for the skill you need."However, the prompt says: "Use native tools directly whenever the right tool and required arguments are obvious."
If I assume the intent name is
send_smsor similar, I might be guessing.The instructions also say: "If you are unsure about parameters or need gateway-specific rules, call load_skill first, then follow its instructions."
Since I don't know the exact intent name or parameters for sending a message, I must call
load_skillforrun_intent.[End Thinking]
[Tool Call: load_skill — success]
Request: {"name":"load_skill","arguments":{"skill_name":"run_intent"}}
Result: run_intent: Perform a native Android device action.
Parameters (pass as JSON in the 'parameters' argument):
Available intents:
FLASHLIGHT:
toggle_flashlight_on, toggle_flashlight_off — No params
COMMUNICATION:
send_email — params: contact, subject, body
send_sms — params: contact, message
make_call — params: contact
SCHEDULING:
set_alarm — params: time ("10pm", "9:30am"), day (optional: "tomorrow", "monday"), label (optional)
set_timer — params: duration_seconds ("180" for 3 min), label (optional)
create_calendar_event — params: title, date (pass relative terms as-is: "tomorrow", "next thursday", "this friday"; or YYYY-MM-DD for explicit dates), time (HH:MM), duration_minutes (optional), description (optional), attendees (optional, comma-separated contact names)
save_important_date — params: label, date (e.g. "15 March" or "22 June 2018")
list_important_dates — no params
remove_important_date — params: label
CALCULATOR / CONVERSION:
calculate_arithmetic — params: expression (calculator expression or simple arithmetic phrase)
convert_units — params: value, from_unit, to_unit (supported common units across length, mass, volume, temperature, and speed)
convert_cooking_measure — params: amount, from_unit, ingredient, to_unit (ingredient-aware cooking conversion for volume↔mass and ingredient-qualified kitchen-unit conversions; defaults to grams when the user asks what something weighs)
convert_currency — params: amount, from_currency, to_currency (latest ECB-backed rates via Frankfurter; not real-time)
SYSTEM TOGGLES:
toggle_dnd_on, toggle_dnd_off — No params
toggle_wifi — params: state ("on" or "off")
toggle_bluetooth — params: state ("on" or "off")
toggle_airplane_mode — params: state ("on" or "off")
toggle_hotspot — params: state ("on" or "off")
VOLUME:
set_volume — params: value (0-100 or 1-10), is_percent ("true" if 0-100, "false" if 1-10)
MEDIA PLAYBACK:
play_media — params: query (song name), artist (optional)
play_media_album — params: album, artist (optional)
play_media_playlist — params: playlist
play_youtube — params: query
play_spotify — params: query
play_plexamp — params: query
play_youtube_music — params: query
play_netflix — params: query
play_plex — params: title
NAVIGATION:
navigate_to — params: destination
find_nearby — params: query
APPS:
open_app — params: app_name
INFO QUERIES:
get_battery, get_time, get_date — No params
NOTES:
create_note — params: content (the text to record as a note or voice memo)
list_notes — no params (returns a formatted list of saved notes)
LISTS:
create_list — params: list_name (required)
add_to_list — params: item (required), list_name (required)
Rules:
Alarm rule: whenever the user says 'set alarm', 'set an alarm', 'alarm for', 'alarm at',
'wake me up at', or 'remind me at [specific clock time]' — call runIntent
with intentName=set_alarm. Pass time EXACTLY as user said (e.g. time:"10pm").
'Remind me at [specific time]' is an alarm (set_alarm).
If the user specifies a day (e.g. 'tomorrow', 'next Monday'), include
day=<day_value> passing it exactly as said (e.g. day:"tomorrow", day:"monday").
NEVER output alarm confirmation text — only the tool call.
NOTE: 'remind me in X minutes' is a timer (set_timer), NOT an alarm.
Calendar rule: 'add calendar entry', 'create calendar event', 'add event',
'schedule [topic] on [date]', 'set up a meeting', 'block time on my calendar',
'put [X] in my calendar' → runIntent with intentName=create_calendar_event.
Pass relative dates as-is ONLY for these supported forms: "tomorrow", "next ", "this ".
Note: 'this ' resolves to today if today is that day, otherwise next occurrence.
For anything else (e.g. 'the day after tomorrow', 'next week'), convert to YYYY-MM-DD.
Only use YYYY-MM-DD if the user stated an explicit date or an unsupported relative form. Pass time as HH:MM (24h).
NEVER confirm event was created without calling the tool.
'remind me in X minutes/seconds' is set_timer, NOT create_calendar_event.
DND rule: 'turn on do not disturb', 'enable DND', 'silence notifications' →
runIntent with intentName=toggle_dnd_on.
'turn off do not disturb', 'disable DND', 'allow notifications again' →
runIntent with intentName=toggle_dnd_off.
If the app needs permission, it will open the settings page automatically.
Volume rule: 'set volume to 50%', 'volume 7' → runIntent with intentName=set_volume.
If user says percentage (0-100), set is_percent="true". If 1-10, set is_percent="false".
Calculator rule: for arithmetic or calculator-style questions, ALWAYS call
runIntent with intentName=calculate_arithmetic instead of doing the math yourself.
Pass the math in expression exactly as symbols when already present (e.g. '245 * 17'),
or as a simple phrase the evaluator understands (e.g. '18.5% of 240').
Unit-conversion rule: for supported deterministic physical unit conversions, call runIntent with
intentName=convert_units instead of doing the conversion yourself.
Pass value as a decimal string and pass explicit normalized units in from_unit/to_unit
such as m, yd, km, mi, mg, g, kg, oz, lb, mL, L, tsp, tbsp, cups, gallons, celsius, fahrenheit, kelvin, m/s, mph, or km/h.
Cooking-conversion rule: for ingredient-aware cooking conversion questions, ALWAYS call runIntent with intentName=convert_cooking_measure.
Pass amount as a decimal string, pass explicit mass or volume units in from_unit/to_unit, and include ingredient exactly as the user said it.
Use this for ingredient-qualified cooking phrases like 3 tbsp butter → grams, 400 g flour → cups, 2 gallons milk → kilogrammes, or how much 2 gallons milk weighs in pounds.
If an ingredient is mentioned but the request is still plain same-category physical unit math outside the cooking path — for example 3 lb flour → grams, 8 oz flour → grams, or 2 gallons milk → liters — keep using convert_units. Do NOT invent cooking densities. The native path uses a small built-in ingredient table and will fail clearly if the ingredient is unsupported.
Currency-conversion rule: for exchange-rate questions, ALWAYS call runIntent with intentName=convert_currency.
Pass amount as a decimal string and pass explicit currency codes or names in from_currency/to_currency
such as AUD, NZD, USD, EUR, or Australian dollars → New Zealand dollars.
Do NOT invent, estimate, or claim real-time exchange rates in model text. The native path will return the latest available ECB-backed rate date and fail closed if rates are unavailable or too stale.
Media rule: For music playback, use play_media with query (song name) and artist.
For albums, use play_media_album. For playlists, use play_media_playlist.
For YouTube/Spotify/Netflix/Plex, use the corresponding intent with query parameter.
Navigation rule: 'navigate to X', 'directions to X' → navigate_to with destination.
'find X nearby', 'where is nearest X' → find_nearby with query.
Call rule: 'call X', 'phone X', 'dial X' → make_call with contact name.
Note rule: 'write a note', 'create a note about X', 'voice memo about X', 'add a note X', 'note to self: X', 'save a memo about X' → runIntent with intentName=create_note, parameters='{"content":"X"}'.
'Show my notes', 'list my notes', 'what notes do I have', 'what notes do you have saved', 'do I have any notes', 'my notes' → runIntent with intentName=list_notes.
CRITICAL: NEVER use search_memory to answer questions about notes. Notes are stored separately from memories and MUST be retrieved with list_notes. search_memory is for personal facts and preferences only.
List rule: 'create a list called X', 'add a list called X', 'make a shopping list' → runIntent with intentName=create_list, parameters='{"list_name":"X"}'.
'Add X to my shopping list', 'put X on the grocery list' → runIntent with intentName=add_to_list, parameters='{"item":"X","list_name":"shopping"}'.
Examples:
Flashlight on → runIntent(intentName="toggle_flashlight_on", parameters="{}")
Flashlight off → runIntent(intentName="toggle_flashlight_off", parameters="{}")
Send email to John → runIntent(intentName="send_email", parameters='{"contact":"John","subject":"Hi","body":"Text"}')
Send SMS → runIntent(intentName="send_sms", parameters='{"contact":"Mom","message":"On my way"}')
Call Dad → runIntent(intentName="make_call", parameters='{"contact":"Dad"}')
Set alarm 10pm → runIntent(intentName="set_alarm", parameters='{"time":"10pm"}')
Set alarm 9pm called dinner → runIntent(intentName="set_alarm", parameters='{"time":"9pm","label":"dinner"}')
Set alarm Monday 7am → runIntent(intentName="set_alarm", parameters='{"time":"7am","day":"monday"}')
Set timer 3min → runIntent(intentName="set_timer", parameters='{"duration_seconds":"180"}')
Calendar event (explicit date) → runIntent(intentName="create_calendar_event", parameters='{"title":"Lunch","date":"2026-04-15","time":"12:30"}')
Calendar event (relative date) → runIntent(intentName="create_calendar_event", parameters='{"title":"Cancel MightyApe","date":"next thursday","time":"16:00"}')
Calendar with attendees → runIntent(intentName="create_calendar_event", parameters='{"title":"Dinner","date":"friday","time":"19:00","attendees":"Sarah,John"}')
Save important date → runIntent(intentName="save_important_date", parameters='{"label":"mum's birthday","date":"15 March"}')
List important dates → runIntent(intentName="list_important_dates", parameters='{}')
Remove important date → runIntent(intentName="remove_important_date", parameters='{"label":"mum's birthday"}')
Calculator → runIntent(intentName="calculate_arithmetic", parameters='{"expression":"18.5% of 240"}')
Math helpers → runIntent(intentName="calculate_arithmetic", parameters='{"expression":"round(sqrt((25^2)) + abs(-2.6) + (10 % 3), 2)"}')
Unit conversion → runIntent(intentName="convert_units", parameters='{"value":"100","from_unit":"m","to_unit":"yards"}')
Cooking conversion → runIntent(intentName="convert_cooking_measure", parameters='{"amount":"3","from_unit":"tbsp","ingredient":"butter","to_unit":"g"}')
Currency conversion → runIntent(intentName="convert_currency", parameters='{"amount":"100","from_currency":"AUD","to_currency":"NZD"}')
Turn on DND → runIntent(intentName="toggle_dnd_on", parameters="{}")
Enable Wi-Fi → runIntent(intentName="toggle_wifi", parameters='{"state":"on"}')
Turn off Bluetooth → runIntent(intentName="toggle_bluetooth", parameters='{"state":"off"}')
Set volume to 50% → runIntent(intentName="set_volume", parameters='{"value":"50","is_percent":"true"}')
Play Bohemian Rhapsody → runIntent(intentName="play_media", parameters='{"query":"Bohemian Rhapsody","artist":"Queen"}')
Play Abbey Road album → runIntent(intentName="play_media_album", parameters='{"album":"Abbey Road","artist":"The Beatles"}')
Play workout playlist → runIntent(intentName="play_media_playlist", parameters='{"playlist":"Workout Mix"}')
Play cat videos on YouTube → runIntent(intentName="play_youtube", parameters='{"query":"cat videos"}')
Navigate to airport → runIntent(intentName="navigate_to", parameters='{"destination":"airport"}')
Find coffee nearby → runIntent(intentName="find_nearby", parameters='{"query":"coffee"}')
Open Spotify → runIntent(intentName="open_app", parameters='{"app_name":"Spotify"}')
Get battery → runIntent(intentName="get_battery", parameters="{}")
What time is it → runIntent(intentName="get_time", parameters="{}")
Create a note about milk → runIntent(intentName="create_note", parameters='{"content":"milk"}')
Voice memo about the meeting → runIntent(intentName="create_note", parameters='{"content":"about the meeting"}')
Show my notes → runIntent(intentName="list_notes", parameters="{}")
Add a list called shopping → runIntent(intentName="create_list", parameters='{"list_name":"shopping"}')
Create a groceries list → runIntent(intentName="create_list", parameters='{"list_name":"groceries"}')
Add milk to my shopping list → runIntent(intentName="add_to_list", parameters='{"item":"milk","list_name":"shopping"}')
[End Tool Call]
run_intent: Perform a native Android device action.
Parameters (pass as JSON in the 'parameters' argument):
Available intents:
FLASHLIGHT:
toggle_flashlight_on, toggle_flashlight_off — No params
COMMUNICATION:
send_email — params: contact, subject, body
send_sms — params: contact, message
make_call — params: contact
SCHEDULING:
set_alarm — params: time ("10pm", "9:30am"), day (optional: "tomorrow", "monday"), label (optional)
set_timer — params: duration_seconds ("180" for 3 min), label (optional)
create_calendar_event — params: title, date (pass relative terms as-is: "tomorrow", "next thursday", "this friday"; or YYYY-MM-DD for explicit dates), time (HH:MM), duration_minutes (optional), description (optional), attendees (optional, comma-separated contact names)
save_important_date — params: label, date (e.g. "15 March" or "22 June 2018")
list_important_dates — no params
remove_important_date — params: label
CALCULATOR / CONVERSION:
calculate_arithmetic — params: expression (calculator expression or simple arithmetic phrase)
convert_units — params: value, from_unit, to_unit (supported common units across length, mass, volume, temperature, and speed)
convert_cooking_measure — params: amount, from_unit, ingredient, to_unit (ingredient-aware cooking conversion for volume↔mass and ingredient-qualified kitchen-unit conversions; defaults to grams when the user asks what something weighs)
convert_currency — params: amount, from_currency, to_currency (latest ECB-backed rates via Frankfurter; not real-time)
SYSTEM TOGGLES:
toggle_dnd_on, toggle_dnd_off — No params
toggle_wifi — params: state ("on" or "off")
toggle_bluetooth — params: state ("on" or "off")
toggle_airplane_mode — params: state ("on" or "off")
toggle_hotspot — params: state ("on" or "off")
VOLUME:
set_volume — params: value (0-100 or 1-10), is_percent ("true" if 0-100, "false" if 1-10)
MEDIA PLAYBACK:
play_media — params: query (song name), artist (optional)
play_media_album — params: album, artist (optional)
play_media_playlist — params: playlist
play_youtube — params: query
play_spotify — params: query
play_plexamp — params: query
play_youtube_music — params: query
play_netflix — params: query
play_plex — params: title
NAVIGATION:
navigate_to — params: destination
find_nearby — params: query
APPS:
open_app — params: app_name
INFO QUERIES:
get_battery, get_time, get_date — No params
NOTES:
create_note — params: content (the text to record as a note or voice memo)
list_notes — no params (returns a formatted list of saved notes)
LISTS:
create_list — params: list_name (required)
add_to_list — params: item (required), list_name (required)
Rules:
Alarm rule: whenever the user says 'set alarm', 'set an alarm', 'alarm for', 'alarm at',
'wake me up at', or 'remind me at [specific clock time]' — call runIntent
with intentName=set_alarm. Pass time EXACTLY as user said (e.g. time:"10pm").
'Remind me at [specific time]' is an alarm (set_alarm).
If the user specifies a day (e.g. 'tomorrow', 'next Monday'), include
day=<day_value> passing it exactly as said (e.g. day:"tomorrow", day:"monday").
NEVER output alarm confirmation text — only the tool call.
NOTE: 'remind me in X minutes' is a timer (set_timer), NOT an alarm.
Calendar rule: 'add calendar entry', 'create calendar event', 'add event',
'schedule [topic] on [date]', 'set up a meeting', 'block time on my calendar',
'put [X] in my calendar' → runIntent with intentName=create_calendar_event.
Pass relative dates as-is ONLY for these supported forms: "tomorrow", "next ", "this ".
Note: 'this ' resolves to today if today is that day, otherwise next occurrence.
For anything else (e.g. 'the day after tomorrow', 'next week'), convert to YYYY-MM-DD.
Only use YYYY-MM-DD if the user stated an explicit date or an unsupported relative form. Pass time as HH:MM (24h).
NEVER confirm event was created without calling the tool.
'remind me in X minutes/seconds' is set_timer, NOT create_calendar_event.
DND rule: 'turn on do not disturb', 'enable DND', 'silence notifications' →
runIntent with intentName=toggle_dnd_on.
'turn off do not disturb', 'disable DND', 'allow notifications again' →
runIntent with intentName=toggle_dnd_off.
If the app needs permission, it will open the settings page automatically.
Volume rule: 'set volume to 50%', 'volume 7' → runIntent with intentName=set_volume.
If user says percentage (0-100), set is_percent="true". If 1-10, set is_percent="false".
Calculator rule: for arithmetic or calculator-style questions, ALWAYS call
runIntent with intentName=calculate_arithmetic instead of doing the math yourself.
Pass the math in expression exactly as symbols when already present (e.g. '245 * 17'),
or as a simple phrase the evaluator understands (e.g. '18.5% of 240').
Unit-conversion rule: for supported deterministic physical unit conversions, call runIntent with
intentName=convert_units instead of doing the conversion yourself.
Pass value as a decimal string and pass explicit normalized units in from_unit/to_unit
such as m, yd, km, mi, mg, g, kg, oz, lb, mL, L, tsp, tbsp, cups, gallons, celsius, fahrenheit, kelvin, m/s, mph, or km/h.
Cooking-conversion rule: for ingredient-aware cooking conversion questions, ALWAYS call runIntent with intentName=convert_cooking_measure.
Pass amount as a decimal string, pass explicit mass or volume units in from_unit/to_unit, and include ingredient exactly as the user said it.
Use this for ingredient-qualified cooking phrases like 3 tbsp butter → grams, 400 g flour → cups, 2 gallons milk → kilogrammes, or how much 2 gallons milk weighs in pounds.
If an ingredient is mentioned but the request is still plain same-category physical unit math outside the cooking path — for example 3 lb flour → grams, 8 oz flour → grams, or 2 gallons milk → liters — keep using convert_units. Do NOT invent cooking densities. The native path uses a small built-in ingredient table and will fail clearly if the ingredient is unsupported.
Currency-conversion rule: for exchange-rate questions, ALWAYS call runIntent with intentName=convert_currency.
Pass amount as a decimal string and pass explicit currency codes or names in from_currency/to_currency
such as AUD, NZD, USD, EUR, or Australian dollars → New Zealand dollars.
Do NOT invent, estimate, or claim real-time exchange rates in model text. The native path will return the latest available ECB-backed rate date and fail closed if rates are unavailable or too stale.
Media rule: For music playback, use play_media with query (song name) and artist.
For albums, use play_media_album. For playlists, use play_media_playlist.
For YouTube/Spotify/Netflix/Plex, use the corresponding intent with query parameter.
Navigation rule: 'navigate to X', 'directions to X' → navigate_to with destination.
'find X nearby', 'where is nearest X' → find_nearby with query.
Call rule: 'call X', 'phone X', 'dial X' → make_call with contact name.
Note rule: 'write a note', 'create a note about X', 'voice memo about X', 'add a note X', 'note to self: X', 'save a memo about X' → runIntent with intentName=create_note, parameters='"content":"X"'.
'Show my notes', 'list my notes', 'what notes do I have', 'what notes do you have saved', 'do I have any notes', 'my notes' → runIntent with intentName=list_notes.
CRITICAL: NEVER use search_memory to answer questions about notes. Notes are stored separately from memories and MUST be retrieved with list_notes. search_memory is for personal facts and preferences only.
List rule: 'create a list called X', 'add a list called X', 'make a shopping list' → runIntent with intentName=create_list, parameters='"list_name":"X"'.
'Add X to my shopping list', 'put X on the grocery list' → runIntent with intentName=add_to_list, parameters='"item":"X","list_name":"shopping"'.
Examples:
Flashlight on → runIntent(intentName="toggle_flashlight_on", parameters="")
Flashlight off → runIntent(intentName="toggle_flashlight_off", parameters="")
Send email to John → runIntent(intentName="send_email", parameters='"contact":"John","subject":"Hi","body":"Text"')
Send SMS → runIntent(intentName="send_sms", parameters='"contact":"Mom","message":"On my way"')
Call Dad → runIntent(intentName="make_call", parameters='"contact":"Dad"')
Set alarm 10pm → runIntent(intentName="set_alarm", parameters='"time":"10pm"')
Set alarm 9pm called dinner → runIntent(intentName="set_alarm", parameters='"time":"9pm","label":"dinner"')
Set alarm Monday 7am → runIntent(intentName="set_alarm", parameters='"time":"7am","day":"monday"')
Set timer 3min → runIntent(intentName="set_timer", parameters='"duration_seconds":"180"')
Calendar event (explicit date) → runIntent(intentName="create_calendar_event", parameters='"title":"Lunch","date":"2026-04-15","time":"12:30"')
Calendar event (relative date) → runIntent(intentName="create_calendar_event", parameters='"title":"Cancel MightyApe","date":"next thursday","time":"16:00"')
Calendar with attendees → runIntent(intentName="create_calendar_event", parameters='"title":"Dinner","date":"friday","time":"19:00","attendees":"Sarah,John"')
Save important date → runIntent(intentName="save_important_date", parameters='"label":"mum's birthday","date":"15 March"')
List important dates → runIntent(intentName="list_important_dates", parameters='')
Remove important date → runIntent(intentName="remove_important_date", parameters='"label":"mum's birthday"')
Calculator → runIntent(intentName="calculate_arithmetic", parameters='"expression":"18.5% of 240"')
Math helpers → runIntent(intentName="calculate_arithmetic", parameters='"expression":"round(sqrt((25²)) + abs(-2.6) + (10 % 3), 2)"')
Unit conversion → runIntent(intentName="convert_units", parameters='"value":"100","from_unit":"m","to_unit":"yards"')
Cooking conversion → runIntent(intentName="convert_cooking_measure", parameters='"amount":"3","from_unit":"tbsp","ingredient":"butter","to_unit":"g"')
Currency conversion → runIntent(intentName="convert_currency", parameters='"amount":"100","from_currency":"AUD","to_currency":"NZD"')
Turn on DND → runIntent(intentName="toggle_dnd_on", parameters="")
Enable Wi-Fi → runIntent(intentName="toggle_wifi", parameters='"state":"on"')
Turn off Bluetooth → runIntent(intentName="toggle_bluetooth", parameters='"state":"off"')
Set volume to 50% → runIntent(intentName="set_volume", parameters='"value":"50","is_percent":"true"')
Play Bohemian Rhapsody → runIntent(intentName="play_media", parameters='"query":"Bohemian Rhapsody","artist":"Queen"')
Play Abbey Road album → runIntent(intentName="play_media_album", parameters='"album":"Abbey Road","artist":"The Beatles"')
Play workout playlist → runIntent(intentName="play_media_playlist", parameters='"playlist":"Workout Mix"')
Play cat videos on YouTube → runIntent(intentName="play_youtube", parameters='"query":"cat videos"')
Navigate to airport → runIntent(intentName="navigate_to", parameters='"destination":"airport"')
Find coffee nearby → runIntent(intentName="find_nearby", parameters='"query":"coffee"')
Open Spotify → runIntent(intentName="open_app", parameters='"app_name":"Spotify"')
Get battery → runIntent(intentName="get_battery", parameters="")
What time is it → runIntent(intentName="get_time", parameters="")
Create a note about milk → runIntent(intentName="create_note", parameters='"content":"milk"')
Voice memo about the meeting → runIntent(intentName="create_note", parameters='"content":"about the meeting"')
Show my notes → runIntent(intentName="list_notes", parameters="")
Add a list called shopping → runIntent(intentName="create_list", parameters='"list_name":"shopping"')
Create a groceries list → runIntent(intentName="create_list", parameters='"list_name":"groceries"')
Add milk to my shopping list → runIntent(intentName="add_to_list", parameters='"item":"milk","list_name":"shopping"')