{"name":"aeria","api":"/api/v1","mcp":{"url":"/mcp","oauth":"/.well-known/oauth-protected-resource/mcp"},"signIn":{"code":"POST /api/auth/email-otp/send-verification-otp, then POST /api/auth/sign-in/email-otp","passkey":"/api/auth/passkey/*"},"tools":[{"name":"app_create","summary":"Make an app: its repository from the seed, its production deployed","route":"POST /api/v1/app/create"},{"name":"app_archive","summary":"Archive an app: hidden, nothing deleted","route":"POST /api/v1/app/archive"},{"name":"app_branch_create","summary":"Start a branch of an app: its clone in /workspace/<app>, on branch-<n>","route":"POST /api/v1/app/branch/create"},{"name":"app_code_search","summary":"Search the files of an app's main or of a branch (keyword over their paths)","route":"GET /api/v1/app/code/search"},{"name":"app_code_read","summary":"Read one file of an app's main or of a branch: its text","route":"GET /api/v1/app/code/read"},{"name":"app_code_push","summary":"Commit files to an app's working branch (pushed by aeria): what app_preview then builds","route":"POST /api/v1/app/code/push"},{"name":"app_preview","summary":"Preview an app's branch: what it pushed, built and served at its own address","route":"POST /api/v1/app/preview"},{"name":"app_promote","summary":"Merge an app's branch into main and deploy main to production","route":"POST /api/v1/app/promote"},{"name":"app_rollback","summary":"Deploy an earlier deployment's code to an app's production again, with today's secrets and settings","route":"POST /api/v1/app/rollback"},{"name":"app_deployment_search","summary":"Search an app's production deployments (keyword over their state or commit)","route":"GET /api/v1/app/deployment/search"},{"name":"app_branch_search","summary":"Search an app's branches (keyword over their names, branch-<n>)","route":"GET /api/v1/app/branch/search"},{"name":"app_search","summary":"Search a workspace's apps (keyword over their names, tags: those carrying all)","route":"GET /api/v1/app/search"},{"name":"app_show","summary":"Show an app: its address, branches, deployments, versions and needs","route":"GET /api/v1/app/show"},{"name":"app_update","summary":"Change an app: its tags, the list given all of them","route":"POST /api/v1/app/update"},{"name":"app_set","summary":"Set one of the settings an app declares: a secret one sealed to its workspace's egress, a plain one deployed","route":"POST /api/v1/app/set"},{"name":"app_secret_rotate","summary":"Rotate one of aeria's own secrets of an app: its key or its sessions' secret","route":"POST /api/v1/app/secret/rotate"},{"name":"app_file_url","summary":"Sign a URL for one of an app's files: put, get or delete, 5 minutes","route":"POST /api/v1/app/file/url"},{"name":"app_backup_create","summary":"Back up an app's production database","route":"POST /api/v1/app/backup/create"},{"name":"app_backup_search","summary":"Search an app's backups (keyword over their state)","route":"GET /api/v1/app/backup/search"},{"name":"app_backup_restore","summary":"Load an app's backup into a branch's preview database","route":"POST /api/v1/app/backup/restore"},{"name":"app_backup_delete","summary":"Delete one of an app's backups (its record kept)","route":"POST /api/v1/app/backup/delete"},{"name":"app_sql_run","summary":"Read an app's production database: one SELECT, EXPLAIN or WITH … SELECT","route":"POST /api/v1/app/sql/run"},{"name":"app_model_search","summary":"Search an app's models: production's, or a branch's","route":"GET /api/v1/app/model/search"},{"name":"app_model_show","summary":"Show one of an app's models, and whether production runs it","route":"GET /api/v1/app/model/show"},{"name":"app_schedule_search","summary":"Search an app's schedules in its code: production's, or a branch's","route":"GET /api/v1/app/schedule/search"},{"name":"app_schedule_show","summary":"Show one of an app's schedules: its code, its row and its script's trigger, each drift said","route":"GET /api/v1/app/schedule/show"},{"name":"app_schedule_run_search","summary":"Search production's schedule runs, newest first","route":"GET /api/v1/app/schedule/run/search"},{"name":"app_schedule_run_show","summary":"Show one of production's schedule runs","route":"GET /api/v1/app/schedule/run/show"},{"name":"app_publish","summary":"Ask for an app to be public: any workspace may install it once aeria's review approves it","route":"POST /api/v1/app/publish"},{"name":"app_review","summary":"Review an app asked public (aeria's operators): approve it, or refuse it with why","route":"POST /api/v1/app/review"},{"name":"app_public_search","summary":"Search the public apps any workspace may install (keyword over names and labels)","route":"GET /api/v1/app/public/search"},{"name":"app_install","summary":"Install a public app into your workspace: its public operations become its tools","route":"POST /api/v1/app/install"},{"name":"user_whoami","summary":"Who you are signed in as, and your workspaces","route":"GET /api/v1/me"},{"name":"user_logout","summary":"Sign out: the sign-in this call came with ended","route":"POST /api/v1/user/logout"},{"name":"session_create","summary":"Start a session in a workspace, run by one of its agents (its default when none)","route":"POST /api/v1/session/create"},{"name":"session_exec","summary":"Run a command in a session's sandbox, its output streamed live","route":"POST /api/v1/session/exec"},{"name":"session_message","summary":"Send a message to a session's agent (Claude Code), its turn streamed live","route":"POST /api/v1/session/message"},{"name":"session_search","summary":"Search a workspace's sessions, newest first (keyword over their title, tags: those carrying all)","route":"GET /api/v1/session/search"},{"name":"session_show","summary":"Show a session: its state, its sandbox's, its latest turn's events","route":"GET /api/v1/session/show"},{"name":"session_stop","summary":"Stop a session's turn: the running one, or a queued message","route":"POST /api/v1/session/stop"},{"name":"session_steer","summary":"Send a queued message now, into the running turn","route":"POST /api/v1/session/steer"},{"name":"session_archive","summary":"Archive a session: its turn stopped, its sandbox stopped, its work kept","route":"POST /api/v1/session/archive"},{"name":"session_answer","summary":"Answer a question the session's agent asked","route":"POST /api/v1/session/answer"},{"name":"session_decide","summary":"Allow or deny a call the session's agent made at ask, held for a person","route":"POST /api/v1/session/decide"},{"name":"session_update","summary":"Change a session: its tags, the list given all of them","route":"POST /api/v1/session/update"},{"name":"session_delete","summary":"Delete a session for good: its sandbox, its saved work and its journal","route":"POST /api/v1/session/delete"},{"name":"session_shell_create","summary":"Open a tab in a session's terminal: its shell at its socket","route":"POST /api/v1/session/shell/create"},{"name":"session_shell_search","summary":"Search a session's terminal tabs, the oldest first (keyword over their id)","route":"GET /api/v1/session/shell/search"},{"name":"session_shell_archive","summary":"Archive a terminal tab: its shell ended, its lines kept","route":"POST /api/v1/session/shell/archive"},{"name":"browser_act","summary":"Act in your browser page, a Chrome in this sandbox kept across calls and turns: look (the address, title, numbered elements and text), find (elements whose text holds words), click, hover, type (into a field; submit presses Enter), fill (several fields), press (a key), scroll (up, down, or to an element), open (any http or https address; this machine's apps at http://localhost:<port>), back, forward, reload, wait (ms, 5000 at most), screenshot (the view, given to you and attached to your answer), evaluate (a JavaScript expression's value). Elements are named by the ref look or find gives.","route":"POST /api/v1/browser/act"},{"name":"browser_read","summary":"Read a web page whole with your browser: its title, images, links and its content in pages","route":"POST /api/v1/browser/read"},{"name":"browser_capture","summary":"Open a page in your browser and keep a picture of it, whole, attached to your answer","route":"POST /api/v1/browser/capture"},{"name":"browser_save","summary":"Keep a web page whole, as one HTML file attached to your answer","route":"POST /api/v1/browser/save"},{"name":"browser_record","summary":"Film a sequence in your browser (open, fill, click, scroll) as a video attached to your answer","route":"POST /api/v1/browser/record"},{"name":"event_search","summary":"Search a session's events, in order (keyword over their kind and content)","route":"GET /api/v1/event/search"},{"name":"secret_check","summary":"Check your Claude token with Anthropic before it is saved","route":"POST /api/v1/secret/check"},{"name":"secret_set","summary":"Keep one of your secrets, sealed on your device (your Claude token: claude_token)","route":"POST /api/v1/secret/set"},{"name":"connection_set","summary":"Keep a connection: a secret for its hosts, sealed on your device to the workspace's key","route":"POST /api/v1/connection/set"},{"name":"connection_search","summary":"Search a workspace's connections (keyword over names, variables and hosts)","route":"GET /api/v1/connection/search"},{"name":"connection_archive","summary":"Archive a connection: no longer lent, nothing deleted","route":"POST /api/v1/connection/archive"},{"name":"service_call","summary":"Call an operation of a workspace's service (an app's API) with your device's loan","route":"POST /api/v1/service/call"},{"name":"tool_search","summary":"Search the tools an agent can be given: Claude Code's, aeria's, the services' operations","route":"GET /api/v1/tool/search"},{"name":"account_setup","summary":"Keep your key chain: your account key and your workspaces' keys, sealed on your device","route":"POST /api/v1/account/setup"},{"name":"account_show","summary":"Your key chain and your secrets, sealed: for your device to open","route":"GET /api/v1/account/show"},{"name":"device_create","summary":"Make a device of yours: our half of its key, its passcode's check kept","route":"POST /api/v1/device/create"},{"name":"device_unlock","summary":"Unlock a device of yours: its passcode proven, our half answered","route":"POST /api/v1/device/unlock"},{"name":"device_remove","summary":"Remove a device of yours, from another one, its passcode proven","route":"POST /api/v1/device/remove"},{"name":"device_search","summary":"Search your devices (keyword over their ids)","route":"GET /api/v1/device/search"},{"name":"workspace_create","summary":"Make a workspace, you its owner: its key pair made on your device","route":"POST /api/v1/workspace/create"},{"name":"workspace_search","summary":"Search your workspaces (keyword over their names and your role)","route":"GET /api/v1/workspace/search"},{"name":"workspace_set","summary":"Set one of your workspace's settings (idle_minutes)","route":"POST /api/v1/workspace/set"},{"name":"agent_create","summary":"Make an agent in a workspace: its harness, model and instructions","route":"POST /api/v1/agent/create"},{"name":"agent_show","summary":"Show an agent: its model, instructions, tools at their levels and skills","route":"GET /api/v1/agent/show"},{"name":"agent_search","summary":"Search a workspace's agents (keyword over their names, tags: those carrying all)","route":"GET /api/v1/agent/search"},{"name":"agent_update","summary":"Change an agent: its name, model, instructions, sessions at once, tags, or make it the default","route":"POST /api/v1/agent/update"},{"name":"agent_archive","summary":"Archive an agent: hidden, no new session runs it, nothing deleted","route":"POST /api/v1/agent/archive"},{"name":"agent_restore","summary":"Restore an archived agent","route":"POST /api/v1/agent/restore"},{"name":"agent_tool_set","summary":"Give an agent a tool (aeria's, Claude Code's, a service's operation) at a level: allow, ask (held for a person) or deny","route":"POST /api/v1/agent/tool/set"},{"name":"agent_skill_set","summary":"Give an agent a skill: placed in its sandbox at each turn","route":"POST /api/v1/agent/skill/set"},{"name":"agent_skill_remove","summary":"Take a skill from an agent (the skill kept)","route":"POST /api/v1/agent/skill/remove"},{"name":"skill_create","summary":"Make a skill in a workspace: its name and its SKILL.md","route":"POST /api/v1/skill/create"},{"name":"skill_show","summary":"Show a skill: its files and its SKILL.md","route":"GET /api/v1/skill/show"},{"name":"skill_search","summary":"Search a workspace's skills (keyword over their names)","route":"GET /api/v1/skill/search"},{"name":"skill_update","summary":"Change a skill: its name, or its SKILL.md","route":"POST /api/v1/skill/update"},{"name":"skill_archive","summary":"Archive a skill: hidden, placed nowhere, nothing deleted","route":"POST /api/v1/skill/archive"},{"name":"skill_file_set","summary":"Write a file of a skill at its path (relative to the skill's folder)","route":"POST /api/v1/skill/file/set"},{"name":"skill_file_archive","summary":"Archive a file of a skill: placed no more, nothing deleted","route":"POST /api/v1/skill/file/archive"},{"name":"tag_search","summary":"Search a workspace's tags, the most used first (keyword over their names)","route":"GET /api/v1/tag/search"},{"name":"file_create","summary":"Send a file, sealed on your device: its record and a URL to PUT its sealed bytes, 10 minutes","route":"POST /api/v1/file/create"},{"name":"file_read","summary":"Read a file: its sealed key and a URL to GET its sealed bytes, 15 minutes","route":"GET /api/v1/file/read"},{"name":"file_search","summary":"Search a workspace's files (keyword over their names), each with its sealed key","route":"GET /api/v1/file/search"},{"name":"file_archive","summary":"Archive a file: hidden, never deleted","route":"POST /api/v1/file/archive"},{"name":"grant_search","summary":"Search your grants: the connectors (MCP clients) you allowed into a team","route":"GET /api/v1/grant/search"},{"name":"grant_revoke","summary":"Revoke a grant: the connector's tokens refused from now on","route":"POST /api/v1/grant/revoke"},{"name":"artifact_pull","summary":"Pull an artifact into this sandbox to work on it: its latest main, or a new one from its kind's template (app, pdf, email, excel, video) when none has that name; then change it, build with `bun run build` and keep it with artifact_save. Make a document, a page, a sheet, an email or a video this way when the person should keep or share it.","route":"POST /api/v1/artifact/pull"},{"name":"artifact_save","summary":"Build an artifact pulled with artifact_pull and keep it as its next version: the person sees it and can share it. A failed build is refused with its last lines: fix it and save again.","route":"POST /api/v1/artifact/save"},{"name":"artifact_search","summary":"Search a workspace's artifacts (keyword over their kinds, tags: those carrying all), each its versions and its link; names and messages opened with the turn's or the call's loan","route":"GET /api/v1/artifact/search"},{"name":"artifact_update","summary":"Change an artifact: its tags, the list given all of them","route":"POST /api/v1/artifact/update"},{"name":"artifact_access","summary":"Set who opens an artifact at its link: self (its maker), workspace (any member) or public (anyone; its versions opened with their keys from your device's loan)","route":"POST /api/v1/artifact/access"},{"name":"artifact_archive","summary":"Archive an artifact: hidden, its link closed, nothing deleted","route":"POST /api/v1/artifact/archive"},{"name":"artifact_restore","summary":"Restore an archived artifact: found again, its link open again","route":"POST /api/v1/artifact/restore"},{"name":"session_card_create","summary":"Draw a card in the session's conversation: a named card with its props, or one composed of the primitives","route":"POST /api/v1/session/card/create"},{"name":"session_card_save","summary":"Keep a card you drew as a named card of the person's, drawn by name in their next sessions","route":"POST /api/v1/session/card/save"},{"name":"session_card_search","summary":"Find the person's saved cards (keyword over their names, uses and tags), each its props","route":"POST /api/v1/session/card/search"},{"name":"card_create","summary":"Keep a card of yours (its name, use, props' schema, example and spec), checked and sealed with your loan","route":"POST /api/v1/card/create"},{"name":"card_version_create","summary":"Save a card of yours again: its next version, checked and sealed with your loan","route":"POST /api/v1/card/version/create"},{"name":"card_search","summary":"Search the saved cards your sessions draw (keyword over their access, tags: those carrying all), each its latest version","route":"GET /api/v1/card/search"},{"name":"card_access","summary":"Set whose sessions draw a card of yours: self or workspace (never public)","route":"POST /api/v1/card/access"},{"name":"card_archive","summary":"Archive a card of yours: no session draws it again, nothing deleted","route":"POST /api/v1/card/archive"}]}