Tools in the app¶
Fewer tools make a better agent — every tool is one more thing a small model can pick wrongly — so the app ships only what earns its place. Settings turns any of them off; a tool this phone can't run (no Image Playground, no translation pack) is hidden from the model rather than offered and failing.
current_time · calculator |
any time zone; exact arithmetic |
remember · recall |
notes the agent keeps between chats, on the device |
http |
any HTTPS request — writes ask first; refused in offline mode |
device_info |
battery, storage, model, OS |
generate_image |
a picture from a prompt (Image Playground) |
generate_voice |
speaks with on-device voices, Personal Voice included |
transcribe |
speech to text, offline — tap the mic, record, send; the model sees [audio attached: …] and decides to call it |
translate |
Apple's offline translation packs |
describe_image |
scene labels, faces, barcodes on an attached photo (Vision) |
flashlight · vibrate |
torch on/off/dimmed; haptic patterns |
open_app |
another app via deep link, with context in the query string |
Asking first¶
A call that writes — http with POST/PUT/DELETE, open_app — stops at an approval card: the exact request, Approve, Deny, or Edit the arguments. Deny, and the model is told it was denied and carries on without it. Settings › Network › Ask before chooses: every request, writes only (the default), or never. An unanswered card is denied after two minutes.
open_app asks every time unless you put the app's scheme on its allowlist (Settings › On-device Apple tools › open_app › Open without asking). shortcuts:// is the useful one: the agent can run a Shortcut with text as input.
When a call fails¶
The model sees the error, word for word, and tries again with better arguments or answers without the tool. loopl never silently retries or blocks a repeat — what you see in the row is what the model read.
Building your own? The same tools are in the SDK: Tools.


