hmahadik commited on
Commit
e7ff352
·
verified ·
1 Parent(s): e515857

Add tools.json (13-tool schema, board-neutral)

Browse files
Files changed (1) hide show
  1. tools.json +230 -0
tools.json ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": "0.1.0",
3
+ "description": "Physical AI tool schema (lights, buzzer, alarms, camera, system status, plus respond fallback). Canonical mobile-actions format.",
4
+ "tools": [
5
+ {
6
+ "function": {
7
+ "name": "turn_on_lights",
8
+ "description": "Turn on all RGB LEDs and the Neopixel strip to default white.",
9
+ "parameters": {
10
+ "type": "OBJECT",
11
+ "properties": {}
12
+ }
13
+ }
14
+ },
15
+ {
16
+ "function": {
17
+ "name": "turn_off_lights",
18
+ "description": "Turn off all RGB LEDs and the Neopixel strip.",
19
+ "parameters": {
20
+ "type": "OBJECT",
21
+ "properties": {}
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "function": {
27
+ "name": "set_led_color",
28
+ "description": "Set the color of RGB LEDs on the HAT or Neopixel strip.",
29
+ "parameters": {
30
+ "type": "OBJECT",
31
+ "properties": {
32
+ "color": {
33
+ "type": "STRING",
34
+ "description": "Color name (e.g. 'red', 'green', 'blue', 'white', 'orange', 'purple') or 6-digit hex (e.g. '#FF8800')."
35
+ },
36
+ "target": {
37
+ "type": "STRING",
38
+ "description": "Which lights to set: 'all' (default), 'hat' (RGB LEDs on HAT), or 'strip' (Neopixels)."
39
+ },
40
+ "brightness": {
41
+ "type": "INTEGER",
42
+ "description": "Brightness 0-100. Optional, default 100."
43
+ }
44
+ },
45
+ "required": [
46
+ "color"
47
+ ]
48
+ }
49
+ }
50
+ },
51
+ {
52
+ "function": {
53
+ "name": "blink_lights",
54
+ "description": "Blink LEDs a given number of times, optionally in a specific color and speed.",
55
+ "parameters": {
56
+ "type": "OBJECT",
57
+ "properties": {
58
+ "count": {
59
+ "type": "INTEGER",
60
+ "description": "Number of blinks. Default 3."
61
+ },
62
+ "color": {
63
+ "type": "STRING",
64
+ "description": "Color to blink. Default current color or white."
65
+ },
66
+ "speed": {
67
+ "type": "STRING",
68
+ "description": "One of 'slow', 'normal', 'fast'. Default 'normal'."
69
+ }
70
+ }
71
+ }
72
+ }
73
+ },
74
+ {
75
+ "function": {
76
+ "name": "set_neopixel_pattern",
77
+ "description": "Play an animated pattern on the Neopixel strip.",
78
+ "parameters": {
79
+ "type": "OBJECT",
80
+ "properties": {
81
+ "pattern": {
82
+ "type": "STRING",
83
+ "description": "One of 'rainbow', 'chase', 'fade', 'pulse', 'sparkle', 'solid'."
84
+ },
85
+ "color": {
86
+ "type": "STRING",
87
+ "description": "Color for patterns that need one (chase/fade/pulse/solid). Ignored for rainbow."
88
+ },
89
+ "speed": {
90
+ "type": "STRING",
91
+ "description": "One of 'slow', 'normal', 'fast'. Default 'normal'."
92
+ }
93
+ },
94
+ "required": [
95
+ "pattern"
96
+ ]
97
+ }
98
+ }
99
+ },
100
+ {
101
+ "function": {
102
+ "name": "play_buzzer",
103
+ "description": "Play a named pattern on a piezo buzzer wired to a binary GPIO. Only timed patterns are supported — no tunable frequency.",
104
+ "parameters": {
105
+ "type": "OBJECT",
106
+ "properties": {
107
+ "pattern": {
108
+ "type": "STRING",
109
+ "description": "Named pattern: 'beep', 'double_beep', 'siren', 'chirp', 'alarm', 'success', 'error'."
110
+ }
111
+ },
112
+ "required": [
113
+ "pattern"
114
+ ]
115
+ }
116
+ }
117
+ },
118
+ {
119
+ "function": {
120
+ "name": "set_alarm",
121
+ "description": "Schedule an alarm to go off at a given time or after a duration. Alarm triggers buzzer + flashing LEDs.",
122
+ "parameters": {
123
+ "type": "OBJECT",
124
+ "properties": {
125
+ "duration": {
126
+ "type": "STRING",
127
+ "description": "Relative time like '1 minute', '30 seconds', '2 hours'. Use this OR 'time', not both."
128
+ },
129
+ "time": {
130
+ "type": "STRING",
131
+ "description": "Absolute time HH:MM (24-hour). Use this OR 'duration', not both."
132
+ },
133
+ "label": {
134
+ "type": "STRING",
135
+ "description": "Optional human-readable label for the alarm."
136
+ }
137
+ }
138
+ }
139
+ }
140
+ },
141
+ {
142
+ "function": {
143
+ "name": "cancel_alarm",
144
+ "description": "Cancel a scheduled alarm. If no label is given, cancel all alarms.",
145
+ "parameters": {
146
+ "type": "OBJECT",
147
+ "properties": {
148
+ "label": {
149
+ "type": "STRING",
150
+ "description": "Label of the alarm to cancel. Omit to cancel all."
151
+ }
152
+ }
153
+ }
154
+ }
155
+ },
156
+ {
157
+ "function": {
158
+ "name": "list_alarms",
159
+ "description": "List all currently scheduled alarms with their trigger times.",
160
+ "parameters": {
161
+ "type": "OBJECT",
162
+ "properties": {}
163
+ }
164
+ }
165
+ },
166
+ {
167
+ "function": {
168
+ "name": "get_system_status",
169
+ "description": "Report device system status (CPU load, memory, temperature, NPU utilization).",
170
+ "parameters": {
171
+ "type": "OBJECT",
172
+ "properties": {
173
+ "metric": {
174
+ "type": "STRING",
175
+ "description": "Specific metric: 'cpu', 'memory', 'temperature', 'npu', or 'all' (default)."
176
+ }
177
+ }
178
+ }
179
+ }
180
+ },
181
+ {
182
+ "function": {
183
+ "name": "capture_photo",
184
+ "description": "Capture a photo from the MIPI camera on the HAT.",
185
+ "parameters": {
186
+ "type": "OBJECT",
187
+ "properties": {
188
+ "save_as": {
189
+ "type": "STRING",
190
+ "description": "Optional filename. Default timestamp-based."
191
+ }
192
+ }
193
+ }
194
+ }
195
+ },
196
+ {
197
+ "function": {
198
+ "name": "describe_scene",
199
+ "description": "Capture a photo and describe what is visible using the Gemma3 vision model on Torq NPU.",
200
+ "parameters": {
201
+ "type": "OBJECT",
202
+ "properties": {
203
+ "question": {
204
+ "type": "STRING",
205
+ "description": "Optional question about the scene. Default: 'What do you see?'"
206
+ }
207
+ }
208
+ }
209
+ }
210
+ },
211
+ {
212
+ "function": {
213
+ "name": "respond",
214
+ "description": "Reply to the user in natural language without taking any physical action. Use this when the request is out of scope (no matching tool), ambiguous (needs clarification), purely conversational (greetings, thanks), or impossible on this device. Do NOT use this when any physical-action tool fits the request.",
215
+ "parameters": {
216
+ "type": "OBJECT",
217
+ "properties": {
218
+ "message": {
219
+ "type": "STRING",
220
+ "description": "The natural-language reply to show to the user."
221
+ }
222
+ },
223
+ "required": [
224
+ "message"
225
+ ]
226
+ }
227
+ }
228
+ }
229
+ ]
230
+ }