Capability Reference
Every capability an experience can request in its manifest grants. Granted tools are called from script as atlas.call("<id>", params); declarative packs reference workflow-surface tools in run definitions.
This page mirrors docs/experiences/reference/capabilities.md, which is GENERATED from tools.yaml by scripts/generate_experience_docs.sh and freshness-checked in CI — regenerate there, then re-run docs-site/generate_reference.py.
Permission classes
| Id | Title |
|---|---|
calendar | Calendar |
camera | Camera |
clipboard | Clipboard |
contacts | Contacts |
documents | Documents |
keychain | Keychain |
llm | Local LLM |
location | Location |
memory | Memory |
microphone | Microphone |
network | Network |
notifications | Notifications |
phone | Phone Calls |
photos | Photos |
reminders | Reminders |
speech | Speech |
storage | Storage |
Workflow tools (run definitions + atlas.call)
action.create
Create action
| Parameter | Type | Description |
|---|---|---|
assignee_member_id | string | Optional member UUID. |
due_timestamp | string | Optional Unix timestamp. |
notes | string | Optional notes. |
priority | string | critical, important, or normal. |
title | string | Action title. |
action.delete
Delete action
| Parameter | Type | Description |
|---|---|---|
action_id | string | Action UUID. |
action.update
Update action
| Parameter | Type | Description |
|---|---|---|
action_id | string | Action UUID. |
notes | string | Optional notes update. |
priority | string | Optional priority update. |
status | string | Optional status update. |
title | string | Optional title update. |
calendar.event_compose
Compose calendar event — requires permission grant: calendar
| Parameter | Type | Description |
|---|---|---|
end | string | ISO date, unix timestamp, or yyyy-MM-dd HH:mm end. |
location | string | Optional event location. |
notes | string | Optional event notes. |
start | string | ISO date, unix timestamp, or yyyy-MM-dd HH:mm start. |
title | string | Event title. |
clipboard.read_text
Read clipboard text — requires permission grant: clipboard
| Parameter | Type | Description |
|---|---|---|
output | string | Workflow state key that receives clipboard text. |
collection.clear
Clear collection — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
collection | string | YAML collection id declared by the active workflow. |
collection.count
Count collection records — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
collection | string | YAML collection id declared by the active workflow. |
contains | string | Optional substring to match in the where field. |
equals | string | Optional value to match. |
max | string | Optional maximum value for the where field. |
min | string | Optional minimum value for the where field. |
output | string | Workflow state key that receives the count. |
where | string | Optional field to match. |
collection.delete
Delete collection record — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
collection | string | YAML collection id declared by the active workflow. |
id | string | Record id or primary-key value to delete. |
collection.insert
Insert collection record — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
collection | string | YAML collection id declared by the active workflow. |
id | string | Optional stable record id. |
output | string | Optional workflow state key that receives the inserted record JSON. |
values | object | Field values to validate and store. |
collection.query
Query collection — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
collection | string | YAML collection id declared by the active workflow. |
contains | string | Optional substring to match in the where field. |
descending | string | Sort descending when true. |
equals | string | Optional value to match. |
limit | string | Optional maximum number of records. |
max | string | Optional maximum value for the where field. |
min | string | Optional minimum value for the where field. |
output | string | Workflow state key that receives record JSON. |
sort_by | string | Optional collection field to sort by. |
where | string | Optional field to match. |
collection.update
Update collection record — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
collection | string | YAML collection id declared by the active workflow. |
id | string | Record id or primary-key value. |
output | string | Optional workflow state key that receives the updated record JSON. |
values | object | Field values to validate and merge. |
contacts.pick_contact
Pick contact — requires permission grant: contacts
| Parameter | Type | Description |
|---|---|---|
output | string | Workflow state key that receives contact JSON. |
diagnostics.snapshot
Capture device logs — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
limit | string | Optional maximum number of recent log lines (default 200). |
output | string | Workflow state key that receives the diagnostics JSON. |
document.preview
Preview document — requires permission grant: documents
| Parameter | Type | Description |
|---|---|---|
file | string | WorkflowFileBinding or local file URL. |
url | string | Optional document URL. |
document.share
Share document — requires permission grant: documents
| Parameter | Type | Description |
|---|---|---|
file | string | WorkflowFileBinding or local file URL. |
text | string | Optional text to share. |
url | string | Optional URL to share. |
http.request
HTTP request — requires permission grants: keychain, network
json.extract
Extract JSON into workflow state
| Parameter | Type | Description |
|---|---|---|
from | string | Workflow state key containing JSON, commonly http.body. |
mappings | object | State-key to JSON dot-path mappings. |
llm.prompt
Await Atlas prompt — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
allow_tools | boolean | Whether the model may use Atlas tools while answering. |
output | string | Workflow state key that receives the model response. |
prompt | string | Prompt template to send to the local model. |
llm.send
Send to Atlas — requires permission grant: llm
location.current
Read current location — requires permission grant: location
| Parameter | Type | Description |
|---|---|---|
output | string | Workflow state key that receives location JSON. |
mail.compose
Compose email — requires permission grant: documents
| Parameter | Type | Description |
|---|---|---|
bcc | string | Optional BCC recipients. |
body | string | Email body. |
cc | string | Optional CC recipients. |
file | string | Optional WorkflowFileBinding or file URL. |
subject | string | Email subject. |
to | string | Comma-separated recipients. |
maps.open
Open Maps — requires permission grant: location
| Parameter | Type | Description |
|---|---|---|
address | string | Optional address query. |
label | string | Optional map item label. |
latitude | string | Optional latitude. |
longitude | string | Optional longitude. |
memory.store
Store memory — requires permission grant: memory
message.archive
Archive message
| Parameter | Type | Description |
|---|---|---|
message_id | string | Message UUID. |
message.copy
Copy message
| Parameter | Type | Description |
|---|---|---|
message_id | string | Message UUID. |
message.create
Create message
message.delete_for_everyone
Delete for everyone
| Parameter | Type | Description |
|---|---|---|
message_id | string | Message UUID. |
message.edit
Edit message
| Parameter | Type | Description |
|---|---|---|
message_id | string | Message UUID. |
message.react
React
| Parameter | Type | Description |
|---|---|---|
key | string | Emoji reaction key. Defaults to a heart. |
message_id | string | Message UUID. |
message.save
Save message
| Parameter | Type | Description |
|---|---|---|
message_id | string | Message UUID. |
message.trash
Trash message
| Parameter | Type | Description |
|---|---|---|
message_id | string | Message UUID. |
message.update
Update message
| Parameter | Type | Description |
|---|---|---|
message_id | string | Message UUID. |
text | string | Complete non-empty replacement message text. |
notification.cancel
Cancel notification — requires permission grant: notifications
| Parameter | Type | Description |
|---|---|---|
all | boolean | Cancel all pending and delivered local notifications. |
id | string | Notification identifier to cancel. |
notification.permission_request
Request notification permission — requires permission grant: notifications
notification.schedule_local
Schedule local notification — requires permission grant: notifications
| Parameter | Type | Description |
|---|---|---|
body | string | Notification body. |
date | string | Delivery date. |
id | string | Stable notification identifier. |
title | string | Notification title. |
phone.call
Call phone number — requires permission grant: phone
| Parameter | Type | Description |
|---|---|---|
key | string | Optional workflow state key to call when phone_number is empty. |
phone_number | string | Phone number or template to call. |
scope | string | Optional schema scope to call when phone_number is empty. |
reminder.create
Create reminder — requires permission grant: reminders
| Parameter | Type | Description |
|---|---|---|
due | string | Optional due date. |
notes | string | Optional reminder notes. |
title | string | Reminder title. |
scanner.scan_code
Scan code — requires permission grant: camera
| Parameter | Type | Description |
|---|---|---|
output | string | Workflow state key that receives scanned code JSON. |
sms.compose
Compose message
| Parameter | Type | Description |
|---|---|---|
body | string | Message body. |
to | string | Comma-separated phone recipients. |
speech.speak
Speak text — requires permission grant: speech
| Parameter | Type | Description |
|---|---|---|
key | string | Optional workflow state key to speak when text is empty. |
scope | string | Optional schema scope to speak when text is empty. |
text | string | Text or template to speak. |
speech.stop
Stop speaking — requires permission grant: speech
state.append
Append workflow state
| Parameter | Type | Description |
|---|---|---|
key | string | Workflow state key to append to. |
value | string | Value to append. |
state.backspace
Backspace workflow state
| Parameter | Type | Description |
|---|---|---|
key | string | Workflow state key to trim. |
state.clear
Clear workflow state
| Parameter | Type | Description |
|---|---|---|
key | string | Workflow state key to clear. |
state.increment
Increment workflow state
| Parameter | Type | Description |
|---|---|---|
amount | string | Amount to add. |
key | string | Workflow state key to increment. |
max | string | Optional maximum. |
min | string | Optional minimum. |
state.set
Set workflow state
| Parameter | Type | Description |
|---|---|---|
key | string | Workflow state key to write. |
value | string | Value or template to store. |
state.toggle
Toggle workflow state
| Parameter | Type | Description |
|---|---|---|
key | string | Workflow state key to toggle between true and false. |
sync.poll
Poll sync resource — requires permission grants: network, storage
| Parameter | Type | Description |
|---|---|---|
output | string | Workflow state key that receives sync status JSON. |
sync_resource | string | YAML sync resource id to refresh. |
ui.close_dialog
Close dialog
ui.close_page
Close workflow page
ui.close_sheet
Close sheet
ui.open_dialog
Open dialog
| Parameter | Type | Description |
|---|---|---|
target | string | YAML Dialog element id to present. |
ui.open_page
Open workflow page
| Parameter | Type | Description |
|---|---|---|
target | string | YAML Page element id to open. |
ui.open_sheet
Open sheet
| Parameter | Type | Description |
|---|---|---|
target | string | YAML Sheet element id to present. |
ui.toast
Show toast
| Parameter | Type | Description |
|---|---|---|
message | string | Message to display in a transient toast. |
url.open
Open URL — requires permission grant: network
| Parameter | Type | Description |
|---|---|---|
url | string | External URL using an allowed scheme. |
web.open
Open web page — requires permission grant: network
| Parameter | Type | Description |
|---|---|---|
url | string | HTTPS or HTTP URL to present in-app. |
System tools
attachment.delete
Delete attachment — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
attachment_id | string | Attachment record id. |
auth.session.restore
Restore app sign-in — requires permission grants: keychain, network
contacts.sync
Sync contacts — requires permission grants: contacts, storage
device.context.get
Get device context
eval.cleanup_artifacts
Clean eval artifacts — requires permission grants: memory, storage
| Parameter | Type | Description |
|---|---|---|
eval_cleanup | native | Native eval cleanup payload. |
stream_id | string | Eval stream UUID. |
eval.fixture.store
Store eval fixture — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
eval_attachment_fixture | native | Native eval attachment fixture payload. |
stream_id | string | Destination stream UUID. |
eval.fixtures.delete_prior
Delete prior eval fixtures — requires permission grant: storage
experience.state_set
Update experience state — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
key | string | State key inside the calling experience's namespace |
value | string | New value; an empty string removes the key |
memory.search
Search memory — requires permission grant: memory
share.destinations.publish
Publish share destinations
share.incoming.process
Process incoming shares — requires permission grant: storage
share.suggestion.donate
Donate share suggestion
share.url.handle
Handle Atlas URL
| Parameter | Type | Description |
|---|---|---|
url | string | Incoming atlas:// URL. |
Agent tools (also callable where granted)
experience.create
Create experience — requires permission grant: storage
| Parameter | Type | Description |
|---|---|---|
canvas_html | string | Optional full-canvas index.html (sets canvas mode) |
id | string | Kebab-case experience id, e.g. habit-tracker |
permissions | string | Comma-separated permission classes the granted tools need (e.g. storage) |
script | string | JavaScript source for main.js (onLaunch/onEvent/onStateChange; call granted tools via atlas.call) |
summary | string | One-line description shown on the install sheet |
title | string | Display name shown in the launcher |
tools | string | Comma-separated tool ids to grant (e.g. experience.state_set,message.create) |
ui_yaml | string | Optional declarative views (workflows.yaml vocabulary; every id prefixed exp.<id>.) |
llm.action_create
Create action
| Parameter | Type | Description |
|---|---|---|
assignee | string | Display name of a stream member to assign to. |
notes | string | Optional longer notes. |
priority | string | One of "critical", "important", "normal". |
title | string | Short title of the action. |
llm.action_list
List actions
| Parameter | Type | Description |
|---|---|---|
scope | string | Empty for the current chat, "all" for every chat. |
llm.action_update
Update action
| Parameter | Type | Description |
|---|---|---|
priority | string | Optional new priority. |
status | string | Optional: open, in progress, done, or cancelled. |
title_query | string | Part of the action's title to find it. |
llm.agent_checkpoint_resume
Resume Luna task — requires permission grant: llm
llm.agent_job_approve
Approve Luna job — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
confirm | string | Legacy internal field replaced by the gateway's bound approval_token. |
expected_revision | integer | Revision from the latest list/get result. |
job_id | string | Job id. |
llm.agent_job_create
Schedule Luna job — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
approval_mode | string | "never" to activate immediately or "always" to hold until explicit approval. |
prompt | string | Complete instructions for each scheduled run. |
recurrence | string | One of: none, daily, weekly. Default none. |
scheduled_at | string | First run as ISO 8601 with timezone, e.g. 2026-08-13T09:00:00-04:00. |
time_zone | string | IANA timezone such as America/New_York; default device timezone. |
title | string | Short human-readable job title. |
llm.agent_job_delete
Archive Luna job — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
confirm | string | Legacy internal field replaced by the gateway's bound approval_token. |
expected_revision | integer | Revision from the latest list/get result. |
job_id | string | Job id. |
llm.agent_job_get
Get Luna job — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
job_id | string | Job id from agent_job_list or a prior receipt. |
llm.agent_job_list
List Luna jobs — requires permission grant: llm
llm.agent_job_run
Run Luna job now — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
expected_revision | integer | Revision from the latest list/get result. |
job_id | string | Job id. |
llm.agent_job_update
Update Luna job — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
approval_mode | string | Optional: never or always. |
enabled | string | Optional true to resume or false to pause. |
expected_revision | integer | Revision from the latest list/get result. |
job_id | string | Job id. |
prompt | string | Optional replacement run instructions. |
recurrence | string | Optional: none, daily, or weekly. |
scheduled_at | string | Optional replacement next run as ISO 8601 with timezone. |
time_zone | string | Optional IANA timezone. |
title | string | Optional replacement title. |
llm.agent_run_list
Luna job run history — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
count | integer | Number of recent runs from 1 to 100; default 20. |
job_id | string | Job id. |
llm.annotate
Annotate item — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
item_query | string | Phrase identifying the existing item. |
note | string | The correction or extra context as a complete sentence. |
llm.app_action
Run app action
| Parameter | Type | Description |
|---|---|---|
action_id | string | The action id, e.g. "activity.mark_all_read" or "maps.open". |
args | string | Optional JSON object string containing the action's parameters. |
confirm | string | "true" only after the user explicitly confirmed a destructive action. |
llm.app_capabilities
App capabilities
| Parameter | Type | Description |
|---|---|---|
filter | string | Optional keyword to narrow the list (e.g. "wallpaper", "notification", "pin"). |
llm.atlas_toggle
Toggle Atlas
| Parameter | Type | Description |
|---|---|---|
enabled | string | "on" to enable Atlas in this chat, "off" to disable it. |
llm.call_camera
Call camera
| Parameter | Type | Description |
|---|---|---|
enabled | string | "on" or "off". |
llm.call_mute
Mute call
| Parameter | Type | Description |
|---|---|---|
muted | string | "on" to mute, "off" to unmute. |
llm.capability_execute
Execute capability
| Parameter | Type | Description |
|---|---|---|
arguments_json | string | JSON object string with the capability arguments, or "{}" when it takes no arguments. |
capability_id | string | Exact capability_id returned by capability_search. |
llm.capability_search
Search capabilities
| Parameter | Type | Description |
|---|---|---|
limit | integer | Number of matches from 1 to 8. Default 5. |
query | string | Focused capability query such as "create action", "schedule recurring research", "rename stream", or "store memory". |
llm.contact_lookup
Contact lookup — requires permission grant: contacts
| Parameter | Type | Description |
|---|---|---|
name | string | Contact name (or part of it). Empty string lists contact names. |
llm.create_chat
Create chat
| Parameter | Type | Description |
|---|---|---|
members | string | Comma or "and" separated contact names to add (e.g. "Rowhel and Kyle"). |
name | string | Optional chat title. Leave empty to name it after the members. |
llm.custom_instructions_reset
Reset custom instructions
llm.custom_instructions_set
Set custom instructions
| Parameter | Type | Description |
|---|---|---|
instruction | string | The standing instruction in the user's words. |
llm.device_context
Device context
| Parameter | Type | Description |
|---|---|---|
include | string | Optional CSV of time, date, timezone, location. Omit for clock only. Pass location only when the user's question needs their current place. |
llm.dictionary_refine
Refine dictionary
| Parameter | Type | Description |
|---|---|---|
definition | string | Concise final definition grounded only in what the user explained. |
precision | string | Your confidence from 0 to 1, for example 0.8. |
term | string | The dictionary term being defined. |
llm.end_call
End call
llm.entity_list
List entities — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
kind | string | One of "person", "place", "org". |
llm.file_retrieve
Retrieve file — requires permission grants: memory, storage
| Parameter | Type | Description |
|---|---|---|
date_from | string | ISO-8601 start date. |
date_to | string | ISO-8601 end date. |
limit | string | Default 3. Use "1" for the first/latest and "20" for all. |
order | string | "oldest" or "newest"; default is newest. |
query | string | Description of the file. Use "" when filtering only by type/date. |
type | string | MIME prefix such as "image/", "application/pdf", "text/vcard", "application/location", or "audio/". |
llm.forget_about
Forget about — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
kinds | string | Optional CSV "text, audio, document, contact, photo, video". |
limit | string | "1" for precise single-fact deletion; omit for cascading topic-wide deletion. |
topic | string | Person, place, fact, or topic to remove. |
llm.memory_store
Store memory — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
content | string | Complete statement, e.g. "User works at Spotify" rather than just "Spotify". |
kind | string | Almost always "fact". Use "document" only if user says "save this document". |
llm.message_action
Message action
| Parameter | Type | Description |
|---|---|---|
action | string | One of: reply, save, unsave, archive, unarchive, trash, restore, copy, speak. |
confirm | string | Legacy internal field. Luna receives an approval_token schema for destructive variants through the capability gateway. |
message | string | The message's reference id from message_list, or a distinctive text fragment. |
text | string | For reply — the reply text to send. |
llm.message_list
List messages
| Parameter | Type | Description |
|---|---|---|
chat | string | Chat or contact name. Empty string uses the current chat. |
count | string | How many recent messages (default 15, max 40). |
llm.notes_pull
Pull notes
llm.open_chat
Open chat
| Parameter | Type | Description |
|---|---|---|
name | string | Chat title or contact name to open. |
llm.phone_call
Call phone number — requires permission grant: phone
| Parameter | Type | Description |
|---|---|---|
phone_number | string | Phone number to call, including country code when the user provides one. |
llm.profile_name_set
Set profile name
| Parameter | Type | Description |
|---|---|---|
name | string | The new display name, exactly as the user wants it shown. |
llm.project_review
Project review
| Parameter | Type | Description |
|---|---|---|
lookback_days | string | How many recent days to include. Default 7. |
llm.recall_about
Recall about — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
include_profile_name | boolean | Set true only when the user asks for their own profile name. |
kinds | string | Optional CSV "text, audio, document, contact, photo, video". |
mode | string | Operation chosen by you: search or inventory. |
topic | string | Person, place, thing, or topic for mode=search. Use an empty string for mode=inventory. |
llm.reply
Reply
| Parameter | Type | Description |
|---|---|---|
text | string | The exact text the user will see. Be concise by default, but provide the detail the user requested. |
llm.retag
Retag item — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
item_query | string | Phrase identifying the existing item. |
new_label | string | The new tag to add. |
old_label | string | The current tag to remove. |
llm.search_all
Search everywhere
| Parameter | Type | Description |
|---|---|---|
query | string | Text to search for. |
llm.search_conversation
Search conversation — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
order | string | Result order: relevance, newest, or oldest. You choose; it is never inferred from query wording. |
query | string | Exact keywords or phrase to search. Use an empty string only when order is newest or oldest. |
scope | string | Author scope: user for user-authored messages only, or all for both user and assistant. |
topK | string | Number of past messages to retrieve. Default 5, maximum 20. |
llm.send_message
Send message
| Parameter | Type | Description |
|---|---|---|
text | string | The message text to send. |
to | string | Contact or chat name. Empty string sends in the current chat. |
llm.start_call
Start call
| Parameter | Type | Description |
|---|---|---|
contact | string | Contact name to call. Empty string calls the person in the current chat. |
kind | string | "voice" or "video". |
llm.stream_list
List chats
llm.suggest_route
Suggest route
| Parameter | Type | Description |
|---|---|---|
reason | string | One short phrase explaining why this message belongs there. |
target | string | Destination stream title. |
llm.tag
Tag item — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
item_query | string | Phrase identifying the existing item. |
label | string | Short tag, one to three words. |
llm.untag
Untag item — requires permission grant: memory
| Parameter | Type | Description |
|---|---|---|
item_query | string | Phrase identifying the existing item. |
label | string | The tag to remove. |
llm.web_fetch
Fetch a web page — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
max_content_tokens | integer | Maximum retrieved content budget from 500 to 20000 tokens; default 12000. |
url | string | Exact public HTTP or HTTPS URL to retrieve. |
llm.web_search
Search the web — requires permission grant: llm
| Parameter | Type | Description |
|---|---|---|
allowed_domains | string | Optional comma-separated domains to search exclusively. |
excluded_domains | string | Optional comma-separated domains to exclude. |
max_results | integer | Number of results from 1 to 10; default 5. |
query | string | A focused web search query. |
llm.wipe_all
Wipe all — requires permission grants: memory, storage
| Parameter | Type | Description |
|---|---|---|
scope | string | Optional CSV of modalities "text, audio, document, contact, photo, video". |
Total enabled tools in the registry: 232.