# Tool reference



> Every MCP tool The Cloud exposes, grouped by family with its machine-readable safety class. Generated from the live tool registry — the same source that serves llms.txt — so it can never drift from what the server returns.



## Tool reference

This is the complete tool surface, grouped by family. It is generated at build time from the live MCP tool registry — the exact same source that produces [llms.txt](/llms.txt) and [llms-full.txt](/llms-full.txt) — so it is always what the server actually returns from tools/list. Each tool carries its safety class; read the classes on the [Safety classes & the consent law](/docs/safety-and-consent) page.

**385 tools across 29 families** — 145 read, 240 write, 35 consent-gated.

### Memory & Sync (11)

Durable cross-AI memory: read, search, write, and organize what every AI should carry between sessions.

- `confirmCloudUpdates` [write] — Confirm that the reconciliation draft from `pullCloudUpdates` has been written back, so the watermark advances and the next pull is incremental.
- `createMemory` [write] — Create a Memory — a durable, judgment-grade page that persists across sessions.
- `getUniversalContext` [read] — Get The Cloud's product model — its primitives (Page, My Day, Task, Memory, Space, Calendar event, Habit, Profile, File), the verbs for each, the natural-language phrases that route to each, the rule…
- `getWritingGuide` [read] — Get the canonical guide for authoring rich content in The Cloud's Pages editor — the exact markdown syntax the createPage / editPage / appendPageContent tools accept for headings, lists, callouts, ta…
- `organizeMemory` [write] — Organize the caller's Memory — restack flat memory pages into the Context Design nebula: a Memory hub with Ora memories, Projects, and References sections, placed by each memory's keymap tags.
- `pullCloudUpdates` [read] [external] — Pull what shipped in a GitHub repo since the last sync — the merged pull requests The Cloud has not yet ingested into its memory and docs for that project — and draft the reconciliation.
- `readMemory` [read] — Read a Memory by ID — returns its title, body, keymap tags, and type.
- `resolve` [read] — Resolve ONE loose reference to the right Cloud primitive in a single lookup — a name, a partial id, "the X page", "my Pure Pastry contact" — instead of guessing which tool to call.
- `searchMemory` [read] — Search the caller's Memory — the durable knowledge layer.
- `sync` [read] — Sync with The Cloud — return the full Charter and the user's current memory in one call.
- `updateMemory` [write] — Update an existing Memory's body and/or keymap tags.

### Pages & Spaces (29)

Rich documents and the Spaces holding them — create, read, edit, restructure, tag, and publish.

- `appendPageContent` [write] — Append content to the end of an existing Page without replacing it.
- `batchMovePage` [write] — Move many Pages to one destination — a new parent Page and/or a new Space — in a single auditable operation, instead of one move per page.
- `createPage` [write] — Create a Page — a rich document in a Space.
- `createSpace` [write] — Create a Space — a top-level workspace that holds Pages.
- `deletePage` [write] [destructive] — Delete a Page — moves it to trash, restorable, same as deleting from the UI.
- `editPage` [write] — ⚠️ DESTRUCTIVE — REPLACES THE ENTIRE PAGE BODY.
- `editSection` [write] — Replace the body of one section of a page — the blocks under a heading — leaving the heading and the rest of the page untouched.
- `insertComponent` [write] — Place a real typed component — a status chip — into a page body at a chosen anchor.
- `insertContent` [write] — Insert markdown into a page at a chosen anchor — additively, without replacing anything.
- `insertDialogueCallout` [write] — Write an attributed-dialogue transcript into a page as real callout blocks — one block per turn, each carrying who said it and a real avatar: Ora as the cloud mark, a person by photo/initials, a mode…
- `listComponentTypes` [read] — List the typed block components insertComponent can author and the exact props each accepts — schema discovery, so you author against the real component contract instead of guessing.
- `listPageFiles` [read] — List the files attached to a Page — PDFs, audio, and images embedded in the page body — each with a fileId, name, type, and whether its content can be read (textAvailable).
- `listPages` [read] — List Pages in a Space, or audit exposure across ALL your Spaces.
- `listPageSpaces` [read] — List the user's Spaces — the workspaces that contain Pages.
- `listSpaceContents` [read] — List everything in a Space in one call — its pages, tables, and Studio apps — so a Space reads as a real project hub.
- `listSpaceMembers` [read] — List the members of a Space and their roles (owner / admin / member).
- `movePage` [write] — Move a Page under a new parent Page to build a hierarchy.
- `moveSection` [write] — Relocate a section of a page — a heading and its body — to a new spot, without rewriting the page.
- `readPage` [read] — Read a Page's content as markdown — the same syntax createPage / editPage / appendPageContent accept, so callouts, toggles, lists, and tables round-trip instead of flattening.
- `readPageFile` [read] — Read the content of a file attached to a Page — a PDF's text layer, a DOCX/CSV/TXT/MD document, an audio transcript, or an IMAGE.
- `renamePage` [write] — Rename a page's title only — the body stays unchanged.
- `searchPages` [read] — Search Pages by title across the user's Spaces.
- `setPagesVisibility` [write] [consent] — Bulk Page visibility sweep — up to 50 pages in one call.
- `setPageVisibility` [write] [consent] — Change a Page's visibility.
- `shareSpace` [write] [consent] — Request sharing a Space with a Cloud account at a role (owner | admin | member).
- `tagPage` [write] — Add tags to or remove tags from an EXISTING page — the post-creation counterpart to `createPage`'s `tags` parameter.
- `unshareSpace` [write] [consent] — Request removing a member's access to a Space.
- `updateComponent` [write] — Re-style a status chip you placed earlier with insertComponent, addressed by its componentId.
- `updateSpaceMemberRole` [write] [consent] — Request changing a Space member's role (owner | admin | member).

### Tasks & My Day (16)

To-dos, task lists, and the daily page — the user's plan for today and what is outstanding.

- `addToMyDay` [write] — Append content to the user's My Day page for a date — existing content is preserved.
- `addToMyDayLibrary` [write] — Save an item to the user's files — defaults to today's My Day folder (the daily folder), or pass an explicit folderId to route to another folder.
- `completeMatchingTodo` [write] — Find the incomplete Task matching a completion report and mark it complete in one step.
- `convertMyDayListToTaskBlocks` [write] — Convert bullet lists in a My Day page to checkbox/task blocks.
- `createTodo` [write] — Create a Task — a to-do item in a task list.
- `createTodoList` [write] — Create a task list — the container a Task belongs to.
- `deleteTodo` [write] [destructive] — Delete a Task — moves it to Trash (recoverable), matching the app's delete.
- `getListTaskCounts` [read] — Count Tasks per list, ranked.
- `listTaskLists` [read] — List the user's task lists — the containers a Task belongs to.
- `listTodos` [read] — List every Task for the user, with the list each belongs to.
- `moveTaskToList` [write] — Move a Task to a different list.
- `readMyDay` [read] — Read the user's My Day page for a date — one daily page per calendar date.
- `readMyDayLibrary` [read] — Read the user's My Day library collection (a folder) for a date — the daily collection of saved files and links that mirrors the My Day page.
- `toggleTodo` [write] — Mark a Task complete or incomplete.
- `updateMyDayTask` [write] — Edit, re-check, or delete a SINGLE task block in a My Day page — in place, leaving every sibling block untouched.
- `updateTodo` [write] — Update a Task's text, priority, or due date.

### Calendar & Booking (15)

Events, availability, free-time search, and public booking types.

- `archiveBookingType` [write] [destructive] — Archive a booking type — takes its public link OFFLINE (disables it) so no one can book it.
- `createBookingType` [write] — Create a booking type — a scheduling link people use to book time with you (name, duration, buffers, notice, approval, guests, price, video provider).
- `createEvent` [write] [external] — Schedule a new Calendar event.
- `deleteEvent` [write] [destructive] [external] — Delete a Calendar event.
- `findFreeTime` [read] [external] — Find open slots for a Calendar event in a window that fit a duration.
- `getBookingType` [read] — Get one booking type by id — its full settings, public URL, and whether the link is publicly reachable right now.
- `getEvent` [read] [external] — Get full detail on a single Calendar event by id — description, location, recurrence rule, and the `attendees` roster (each with `email`, `status`, `role`) so you can confirm who was actually invited.
- `listBookings` [read] — List bookings people made on your links — who booked, when, and the status — read-only.
- `listBookingTypes` [read] — List your booking types (scheduling links), newest-edited first.
- `listCalendars` [read] [external] — List the calendars the user can see.
- `listEvents` [read] [external] — List Calendar events between `startTime` and `endTime` (unix ms).
- `presentEvents` [read] [external] — Render multiple Calendar events as cards or an agenda in the chat — use instead of listing event titles in plain text.
- `respondToCalendarEvent` [write] — RSVP to a Calendar event invitation on the user's behalf — set their attendee response to `accepted`, `declined`, or `tentative`.
- `updateBookingType` [write] — Update a booking type you own — rename, adjust duration/buffers/notice/approval/price/guests, or enable/disable it.
- `updateEvent` [write] [external] — Edit an existing Calendar event.

### Habits (10)

Habit definitions, daily logging, streaks, and statistics.

- `archiveHabit` [write] — Archive a Habit — hides it from the active view but keeps its logged history.
- `createHabit` [write] — Create a Habit — a recurring behaviour the user tracks and logs over time, with a frequency and target count.
- `deleteHabit` [write] — Archive a Habit — alias for archiveHabit.
- `getAllStats` [read] — Get derived stats for ALL of the user's active Habits in one call — the single batched read, avoids N+1 when surveying overall progress.
- `getHabitHistory` [read] — Get the day-by-day history for one Habit over a trailing window (default 8 weeks): an ordered series of { date, count, met, note? }, oldest first, one entry per day including unlogged days (count 0).
- `getHabitStats` [read] — Get derived stats for one Habit: current streak (consecutive target-met days, daily habits only), longest streak, periodStreak (consecutive met weeks/months, for weekly/monthly habits), strength (0-1…
- `listHabits` [read] — List the user's Habits.
- `logHabit` [write] — Log progress on a Habit for a date.
- `purgeHabit` [write] [destructive] — Permanently delete a Habit and every logged entry.
- `updateHabit` [write] — Edit an existing Habit — change any of its name, description, icon, color, frequency, time of day, target count, type, unit, reminders, pause (pausedUntil, protects the streak), or stacking anchor (a…

### Files & Drive (11)

Workspace files and folders, plus the searchable index of attached drives.

- `createFolder` [write] — Create a folder to organize Files.
- `deleteFile` [write] [destructive] — Delete a File permanently.
- `deleteFolder` [write] [destructive] — Delete a folder and everything inside it.
- `gatherFiles` [read] — Plan a gather across drives: given indexed files, group them by drive and report which drives are plugged in vs.
- `getFileContext` [read] — Get the full lightweight context for one indexed drive file — metadata plus extracted text / transcript, and whether its drive is plugged in right now.
- `indexDrive` [write] [external] — Index a connected drive on one of the user's machines: the MachineSync daemon scans it on-device in tiers (metadata → light → deep) and pushes a lightweight per-file index up, so the drive stays sear…
- `listFiles` [read] — List folders and Files for the user.
- `moveFile` [write] — Move a File into a different folder.
- `renameFile` [write] — Rename a File.
- `renameFolder` [write] — Rename a folder.
- `searchFiles` [read] — Search the user's drive index by filename, metadata, and extracted text / transcripts across every connected drive — results come from the synced index, so it works even when a drive is UNPLUGGED.

### Tables (18)

MCP-native spreadsheet/database grids — columns, rows, queries, summaries, and sharing.

- `addColumn` [write] — Add a typed column to a table you own, appended to the right of a tab.
- `computeSummary` [read] — Summarize one column of a table you own — count, filled, and for number/currency columns sum + average + min + max (min + max for dates).
- `createTab` [write] — Add a tab (sheet) to a table you own — one table, one URL, several sheets, like a spreadsheet workbook.
- `createTable` [write] — Create a table in the Tables app — a real spreadsheet/database grid.
- `deleteColumn` [write] [destructive] — Delete a column and every value under it from a table you own.
- `insertRows` [write] — Insert rows into a table you own.
- `listTableShares` [read] — List teams a table is shared with — each team's id, name, and permission.
- `listTabs` [read] — List the tabs (sheets) of a table you own — each tab's id, name, and order, left to right.
- `moveTable` [write] — Move a table into a Space so it lives with its project, instead of the owner's global Tables list.
- `queryTable` [read] — Query a table you own — filter and/or sort its rows without loading everything.
- `readTable` [read] — Read a table you own — its meta, its tabs (sheets), and the active tab's columns (type + order) and rows.
- `renameColumn` [write] — Rename a column in place — a name change only (type/config stays).
- `renameTab` [write] — Rename a tab (sheet) of a table you own.
- `renameTable` [write] — Rename a table you own — sets a new title in place.
- `setTableVisibility` [write] [consent] — Request a table visibility change (public ↔ private).
- `shareTable` [write] [consent] — Request sharing a table with a team.
- `unshareTable` [write] [consent] — Request removing a team's access to a table.
- `updateCells` [write] — Edit cells in a table you own.

### Forms (16)

Form definitions, fields, capacity, notifications, SEO, and collected responses.

- `addFormNotificationRecipient` [write] — Add an email address to a form's submission-notification recipients.
- `createForm` [write] — Create a form in the Forms app.
- `deleteFormResponse` [write] [destructive] — Permanently delete one form response by its id — a hard delete (no trash, no undo), for clearing spam or test entries.
- `duplicateForm` [write] — Duplicate a form you own or can edit into a NEW form you own — a full copy of its configuration (every field with its settings, the confirmation messages, the notification recipients, and the capacit…
- `getForm` [read] — Read a form you own — its full definition: title, description, status, its canonical public URL (the ready-to-share /f/<slug> link — use it directly, never rebuild it from the slug), the fields (type…
- `getFormCapacity` [read] — Read a form's SEAT capacity and its graceful full-state config: the seat total (or unlimited), seats confirmed, seats held (pending), seats remaining, live availability, the per-submission seat rule…
- `getFormNotificationSettings` [read] — Read a form's submission-notification settings: whether notifications are on, the additional recipient addresses, the owner address (always notified), and the per-hour burst cap.
- `getFormResponse` [read] — Read one form response by its id — the full answers (label + value), submitter email, and time.
- `listFormResponses` [read] — List responses to a form you own, newest first.
- `listForms` [read] — List the forms you own — each with its id, title, slug, status (draft / published / closed), and canonical public URL (the ready-to-share /f/<slug> link — use it directly, never rebuild it from the s…
- `removeFormNotificationRecipient` [write] — Remove an email address from a form's submission-notification recipients.
- `setFormCapacity` [write] — Set a form's SEAT capacity, its per-submission seat rule, and what it shows once full.
- `setFormFields` [write] — Replace a form's fields with a new set, in order.
- `setFormMessages` [write] — Set the messages a form shows after a successful submission — the confirmation "thank you" title and message, and an optional redirect URL.
- `setFormNotifications` [write] — Turn submission-email notifications on or off for a form you own.
- `setFormSeo` [write] — Set how a form's shared link unfurls on social — the SEO (Open Graph) title and description shown when the /f/<slug> link is pasted into a chat, post, or preview card.

### Contacts & CRM (17)

People, contact folders, lead scouting, and drafted outreach to a contact.

- `addContactsToFolder` [write] — Add hand-picked contacts to a manual folder (drag-in).
- `createContact` [write] — Create a new personal contact for the caller.
- `createContactFolder` [write] — Create a contact folder — the campaign audience primitive (Campaign Execution Studio).
- `deleteContact` [write] [destructive] — Delete (archive) one of the caller's personal contacts by id.
- `getContact` [read] — Get one of the caller's personal contacts in full by its id.
- `listContactFolders` [read] — List the caller's contact folders — the audience primitive for campaigns — each with its live contact count.
- `listContacts` [read] — List the caller's personal contacts — the people layer of their CRM.
- `listFolderContacts` [read] — List the contacts a folder currently resolves to — its hand-picked members or its live rule matches.
- `logContactTouch` [write] — Record a reply the human already posted onto a contact's touch timeline, stamped with its channel and a link to the artifact (the posted comment's URL).
- `queueOutreachDraft` [write] [external] — Queue ONE tailored outreach draft for one of the caller's personal contacts, into their reviewed approve-each queue.
- `reachOutToContact` [write] [destructive] [external] — Reach out to ONE of the caller's personal contacts by email — sends a single real email from the caller's connected Gmail (it appears in their Sent and reads as from them).
- `reachOutViaForm` [write] [external] — Enqueue an outreach to a scouted lead through the contact form on THEIR website — a fleet browser-worker fills and submits the form later, and NOTHING sends until you approve the job in-app first.
- `removeContactsFromFolder` [write] — Remove contacts from a manual folder (drag-out).
- `resolveContact` [read] — Resolve a person against the caller's existing personal contacts — identity lookup and dedup, NOT messaging.
- `scoutLeads` [write] [external] — Scout net-new business leads via the Google Places API and land them as DRAFT lead cards in the caller's CRM.
- `searchContacts` [read] — Search the caller's personal contacts by a single query string, matched across name, email, phone, job title, and notes.
- `updateContact` [write] — Update one of the caller's personal contacts by id.

### Email (18)

Connected Gmail accounts — search, read, send, label, archive, and drafts.

- `addLabelToEmail` [write] [external] — Add a label to a Gmail message.
- `archiveEmail` [write] [external] — Archive a Gmail message — removes it from the inbox, keeps it in All Mail.
- `createDraft` [write] [external] — Create a Gmail draft without sending it.
- `createLabel` [write] [external] — Create a Gmail label.
- `deleteDraft` [write] [destructive] [external] — Delete a Gmail draft.
- `deleteLabel` [write] [destructive] [external] — Delete a Gmail label — removes the label, not the messages it was on.
- `getMailStats` [read] — Outbound mail stats — how much went out per connected account in the last 24h / 7d / 30d, from the canonical send ledger (every send rail, counted once — no Gmail API call).
- `listDrafts` [read] [external] — List the user's Gmail drafts.
- `listLabels` [read] [external] — List the user's Gmail labels (folders/categories).
- `listMailAccounts` [read] — List the Google mail accounts connected to The Cloud — returns { accountId, email, isPrimary } for each.
- `markAsRead` [write] [external] — Mark a Gmail message as read.
- `markAsUnread` [write] [external] — Mark a Gmail message as unread.
- `readEmail` [read] [external] — Read the full content of a Gmail message by its ID.
- `removeLabelFromEmail` [write] [external] — Remove a label from a Gmail message.
- `searchEmails` [read] [external] — Search the user's Gmail messages with Gmail query syntax ('from:user@example.com', 'is:unread', 'subject:meeting', 'in:sent').
- `sendEmail` [write] [destructive] [external] — Send an email via Gmail — this sends a real email and cannot be unsent.
- `setPrimaryMailAccount` [write] — Set the user's PRIMARY (default) mail account — the one every mail tool (sendEmail, createDraft, searchEmails, readEmail, listDrafts, …) uses when no accountId is given.
- `trashEmail` [write] [destructive] [external] — Move a Gmail message to trash.

### Campaigns & Newsletters (20)

Audience campaigns, deliverable packages, send readiness, newsletters, and CAN-SPAM compliance settings.

- `addAudienceToCampaign` [write] — Add an audience to a Campaign, or grow it.
- `addCampaignPackageItem` [write] — Attach a deliverable to a campaign's package — the bundle it delivers (a Cloud page, a Studio app/website, a file, or an external link).
- `createCampaign` [write] — Create a Campaign — the organizing layer over the reviewed outreach queue.
- `createNewsletter` [write] — Start a newsletter — a named publication bound to a subscriber contact folder (its audience).
- `createSavedView` [write] — Create a named, reusable saved view over the caller's personal contacts — a LIVE lens (a filter), not a copy of people.
- `finalizeCampaign` [write] — Finalize a campaign — LOCK its send shape (audience size + channel + package version) so it is ready for the human to send.
- `fireNewsletterSequence` [write] [destructive] [external] — Fire one triggered lifecycle sequence to YOUR OWN account email — a safe preview/self-test of the transactional pipeline (welcome, payment_success, payment_failed, access_approval).
- `getCampaignPrep` [read] — Read a campaign's prep dashboard — audience size, package (deliverable) count, staged drafts, whether the content is ready, and whether it is finalized (and if a finalized shape has drifted).
- `getCampaignSendReadiness` [read] — Answer "can I start sending this campaign, and if not what's blocking?" — the send-readiness preflight.
- `getComplianceSettings` [read] — Read the outreach compliance settings for the signed-in user — the CAN-SPAM physical mailing address and sender name that every campaign email must carry.
- `listCampaignPackage` [read] — List a campaign's package — every deliverable it sends, each resolved to its live title and canonical URL.
- `listCampaigns` [read] — List the caller's campaigns with their live status and counts (pending / sent / replied).
- `listNewsletterIssues` [read] — List a newsletter's issues — the campaigns bound to its subscriber folder — newest first, each with its status (draft / active / paused / done).
- `listNewsletters` [read] — List the caller's newsletters, each with its live subscriber count (from the bound folder).
- `listNewsletterSequences` [read] — List the Newsletter tool's triggered/transactional sequences — the lifecycle emails that fire on an event (welcome, payment success, the graceful payment-failed, access approval), with each one's sub…
- `pauseCampaign` [write] — Pause an active Campaign — its queued drafts hold and none advance until you resume it.
- `removeCampaignPackageItem` [write] — Remove a deliverable from a campaign's package.
- `setComplianceSettings` [write] — Set the outreach compliance settings for the signed-in user — the physical mailing address (a real postal address, legally required in every commercial campaign email) and the sender name shown in th…
- `simulateCampaign` [read] — Simulate a campaign — a per-recipient DRY RUN showing exactly who would receive what (subject + body preview) and the resolved package links, with ZERO sends.
- `startCampaign` [write] [external] — Start a draft Campaign — fan its audience into the reviewed approve-each queue as one personalized draft per contact.

### Telegram (11)

Connected Telegram chats — search, sync control, quote mining, and contact mapping.

- `listTelegramChats` [read] — List the user's synced Telegram chats — title, kind (dm/group/channel), whether sync is on, message count, and the mapped contact if any.
- `listTelegramQuotesForContact` [read] — List the Telegram quotes filed to a contact — the verbatim lines mined from their synced chats, newest first.
- `mapTelegramChatToContact` [write] — Map a synced Telegram chat to a Cloud contact (the person-object) — pass an existing contactId, or a name to resolve or create one.
- `mineTelegramQuotes` [read] — Surface the most quotable lines from a synced Telegram chat — the counterparty's substantive, verbatim messages, ranked.
- `purgeTelegramChat` [write] [destructive] — Purge a synced Telegram chat — permanently deletes the Cloud copy of its messages and quotes, then the chat itself.
- `replyInTelegramChat` [write] [external] — Stage a REPLY to a specific message in one of the caller's synced Telegram chats.
- `saveTelegramQuoteToContact` [write] — File a synced Telegram message as a quote on a person's page.
- `searchTelegramMessages` [read] — Full-text search across the user's synced Telegram messages, optionally scoped to one chat.
- `sendTelegramMessage` [write] [external] — Stage a NEW message to one of the caller's synced Telegram chats.
- `setTelegramChatSync` [write] — Turn syncing on or off for one Telegram chat.
- `telegramConnectionStatus` [read] — Check whether the user has connected their Telegram account, and read the connected account's handle + health status.

### Slack (4)

Ora in the room — read a Space's bridged Slack channels, threads, and history, and post as Ora through the per-class autonomy dial and approval queue.

- `listSlackChannels` [read] [external] — List the Slack channels the Space's bridge is authorized for.
- `postSlackMessage` [write] [external] — Post a message to a bridged Slack channel as the workspace's Ora app identity, always attributed to Ora, never a human.
- `readSlackThread` [read] [external] — Read a Slack thread from a bridged channel into context.
- `searchSlackHistory` [read] [external] — Search Slack history within the Space bridge's authorized channels only.

### Instagram (3)

Connection status, posting, and archiving.

- `archiveInstagram` [write] [external] — Archive the user's connected Instagram account into their Private Files: pulls posts (images/videos), captions and comments via the Graph API into an "Instagram archive" folder, and attempts stories…
- `instagramConnectionStatus` [read] — Check whether the user has connected their Instagram account, and read the connected account's username + health status.
- `postToInstagram` [write] [destructive] [external] — Publish a post to the user's connected Instagram account from a hosted image or video URL, with an optional caption.

### Music (6)

The workspace music library and connected Spotify playlists.

- `addTracksToMusicPlaylist` [write] — Add tracks to a Cloud-native "My Music" playlist by their library ids (from searchMusicLibrary).
- `addTracksToPlaylist` [write] [external] — Add tracks to a Spotify playlist by their Spotify track URIs (from searchTracks).
- `createMusicPlaylist` [write] — Create a new Cloud-native "My Music" playlist — a playlist of the user's OWN Cloud audio (recordings, uploaded files, voice notes), stored in their Cloud, not on Spotify.
- `createPlaylist` [write] [external] — Create a new playlist on the user's own Spotify account.
- `searchMusicLibrary` [read] — Search the user's own Cloud music library (their recordings, uploaded audio, and voice notes — NOT Spotify) by title, artist, or album.
- `searchTracks` [read] [external] — Search the Spotify catalog for tracks by title, artist, mood, or genre.

### Studio Apps (41)

Real multi-file apps built inside the workspace — files, manifests, secrets, rendering, sharing, and verification.

- `appendStudioAppFile` [write] — Append content to a file in a Studio app additively — no whole-file round-trip.
- `archiveStudioApp` [write] [destructive] — Archive a Studio app — move it to the recoverable Archived section.
- `assignStudioAsset` [write] — Assign an uploaded asset to a placeholder slot in a Studio app — the DETERMINISTIC placement: exact file path + exact slot name, no fuzzy matching.
- `attachSecretToApp` [write] — Attach an account-level secret to a Studio app — declares it in the app's capability surface (requestedSecrets) so the runtime proxy can inject it.
- `checkSecretExists` [read] — Check whether a Studio app secret is set — returns a BOOLEAN only, never the value.
- `checkStudioApp` [read] — Check the runtime health of a Studio app's routes (GAP 3 — SPA route-health).
- `createDocSkill` [write] — Create a docSkill — the document analog of a Studio template: the refined structure, formatting, tone, and method for a document CLASS (memo, SOP, retainer letter, proposal, brief, offer letter), plu…
- `createStudioApp` [write] — Create a new Studio app — a first-class Cloud object that renders at `thecloud.so/a/<slug>_<id>` and can be embedded in pages via the App Window block.
- `deleteStudioAppFile` [write] [destructive] — Delete a file from a Studio app by path.
- `deleteStudioAppSecret` [write] [destructive] — Delete a Studio app secret.
- `editStudioAppContent` [write] — Replace a Studio app's contentHTML — the HTML the iframe renders at `/a/<slug>_<id>`.
- `editStudioAppFile` [write] — Surgically edit one file in a Studio app by find-and-replace — patch it in place instead of re-uploading the whole file.
- `editStudioAppFileBatch` [write] — Apply an ORDERED list of find-and-replace edits to one file in a Studio app, ATOMICALLY (all-or-nothing) in a single call.
- `editStudioAppManifest` [write] — Replace a Studio app's manifest — the capability declarations (requestedTools, requestedScopes), hosting mode, pricing, review status.
- `forkDocSkill` [write] — Fork a docSkill you can read into your own library — a NEW customized copy with a forkOf pointer back to the parent.
- `importMediaToApp` [write] [external] — Import real media into a Studio app from consented external pages — a server-side render-then-harvest that lands deduped image files in the app's assets/ tree with provenance (source URL + fetched-at…
- `lintStudioComposition` [read] — Lint a Studio app for the Composition Layer gates: (1) the SCROLL-SHELL guarantee — a top-level header pinned (position: fixed/sticky) WITHOUT the shell that keeps it stable inside the render iframe…
- `listArchivedStudioApps` [read] — List your archived Studio apps, most-recently-archived first.
- `listDocSkills` [read] — List your docSkills — the document skills in your universal library, most-recent first.
- `listStudioAppAdmins` [read] — List a Studio app's admin config: the owner, the explicit admin allowlist, and whether admins are resolved "manual" (allowlist only) or "space" (from the containing Space).
- `listStudioAppFiles` [read] — List the files in a Studio app — returns each file's id, path, mimeType, byteSize, updatedAt (no content, that's readStudioAppFile).
- `listStudioApps` [read] — List the caller's Studio apps, most-recent first.
- `listStudioAppSecrets` [read] — List Studio app secrets — METADATA ONLY: key, scope, isSet (always true for a listed secret), used-by app count, and last-updated.
- `listStudioAppShares` [read] — List teams the Studio app is shared with.
- `moveStudioAppToSpace` [write] — Move a Studio app into a Space so it lives with its project, instead of the owner's global Studio library.
- `placeStudioMedia` [write] — Place an already-uploaded media file into a spot in a Studio app, resolving a VAGUE mention to the right file + spot.
- `readStudioApp` [read] — Read a Studio app — returns its name, contentHTML, manifestJSON, and canonical URL.
- `readStudioAppFile` [read] — Read a single file from a Studio app — returns its content + mimeType.
- `rebuildStudioApp` [write] — Rebuild a Studio app — reconcile it onto its canonical store so what the public /a/ route serves and what tools report agree.
- `renameStudioApp` [write] — Rename a Studio app.
- `renderShareCard` [write] — Rasterize self-contained HTML or SVG into a pixel-perfect share-card PNG and save it as a PRIVATE asset in a Studio app.
- `renderStudioApp` [read] — Render a Studio app headlessly and return SCREENSHOTS Ora can inspect — the visual verify-back loop.
- `restoreStudioApp` [write] — Restore an archived Studio app — bring it back whole (files, history, and settings all intact).
- `rotateStudioAppSecret` [write] [destructive] — Rotate a Studio app secret — replace its value with a new one.
- `setStudioAppAdmins` [write] [consent] — Set who administers a Studio app.
- `setStudioAppSecret` [write] [destructive] — Set (create or overwrite) a Studio app secret's value — WRITE-ONLY.
- `setStudioAppShareCard` [write] [consent] — Request setting a Studio app's link-preview share card — the title, description, and cover image a shared /a/<slug>_<id> link unfurls with on Telegram/Slack/iMessage/social.
- `setStudioAppVisibility` [write] [consent] — Request a Studio app visibility change (public ↔ private).
- `shareStudioApp` [write] [consent] — Request sharing a Studio app with a team.
- `unshareStudioApp` [write] [consent] — Request removing a team's share on a Studio app.
- `writeStudioAppFile` [write] — Create or overwrite a file in a Studio app.

### Media & Video (27)

Image and video generation, transcription, conversion, compression, clip styling, blurring, and stream-safety review.

- `acceptStreamSafeClass` [write] — Accept a whole class of StreamSafe findings at once — apply the default fix to every pending finding of that class (e.g.
- `addBlurRegion` [write] — Add a blur region to a clip in a Studio video project.
- `addTextClip` [write] — Add a typewriter text/title to a Studio video project — text that reveals per character with an optional caret and a subtle, toggleable typing sound.
- `applyStreamSafeFinding` [write] — Resolve ONE StreamSafe finding by applying its fix to the timeline — a reversible blur region (for on-screen info), a cut, or an audio bleep (for spoken info).
- `assembleStudioVideo` [write] [external] — Assemble a Studio video project's uploaded clips into ONE finished video via the ffmpeg media worker — clips ordered, stitched with clean cuts, and audio normalized — landing a PRIVATE video file in…
- `checkImageGeneration` [read] — Check a background image generation/edit started by generateImage or editImage, by its jobId.
- `clearClipStyle` [write] — Remove all Figma-easy styling (corner radius, padding, shadow, background) from a clip in a Studio video project.
- `compressMedia` [write] [external] — Make a video or audio file smaller WITHOUT changing its format, on the media worker — the new, lighter file lands as a NEW PRIVATE file beside the original (the original is never touched, an existing…
- `convertMedia` [write] [external] — Convert a video or audio file in The Cloud into another format (mp4, mov, webm, mkv, m4a, mp3, wav) on the media worker, landing the result as a NEW PRIVATE file beside the original — the source is n…
- `dismissStreamSafeFinding` [write] — Dismiss a StreamSafe finding without changing the video — mark it reviewed and off the gate (on the record).
- `editImage` [write] [external] — Edit or restyle an existing Studio image from a text prompt (inpaint / restyle).
- `generateImage` [write] [external] — Generate an image from a text prompt and save it as a real asset inside a Studio app (Private by default).
- `generateVideo` [write] [external] — Generate a video clip from a text prompt using AI (Higgsfield) and add it to a Studio video project as a PRIVATE asset in that project's media pool.
- `getTranscript` [read] — Read a transcript artifact produced by transcribeMedia back by its id — the full text, timestamped segments, word-level timings, and speaker diarization.
- `listBlurRegions` [read] — List every blur region on a Studio video project, with the clip each sits on and its shape, strength, feather, time window, and keyframes.
- `listClipStyles` [read] — List every styled clip on a Studio video project, with its corner radius, padding, shadow, and background.
- `listStreamSafeFindings` [read] — List the latest StreamSafe sweep's findings for a Studio video project — each finding's class, kind, confidence, time range, whether it has an on-screen box, and its resolution state (pending / appli…
- `listTextClips` [read] — List every typewriter text/title on a Studio video project, with its text, position, timing, and typewriter settings.
- `prepStudioVideoForPosting` [write] [external] — Run the StreamSafe privacy sweep over a Studio video project — the "Prep for posting" pass.
- `readTranscript` [read] — Read the transcript of audio or video the user recorded in The Cloud — voice notes and audio/video tiles.
- `removeBlurRegion` [write] — Remove a blur region from a Studio video project.
- `removeTextClip` [write] — Remove a typewriter text/title from a Studio video project.
- `renderStudioVideo` [write] [external] — Render a Studio video project — burning in everything on the timeline (blur, corner-radius/padding/shadow/background styling, and typewriter text with its typing sound) — via the ffmpeg media worker,…
- `setClipStyle` [write] — Style a clip, image, or text box in a Studio video project like a design tool: round its corners (one slider), pad it, add a drop shadow, or fill a background — all normalized so they read at any res…
- `transcribeMedia` [write] [external] — Transcribe spoken video or audio into a private, timestamped transcript (word timings + speaker diarization), reusing the shipped Deepgram/Whisper ASR.
- `updateBlurRegion` [write] — Update a blur region on a Studio video project — retime it, re-track it with new keyframes, or change its shape, strength, or feather.
- `updateTextClip` [write] — Update a typewriter text/title on a Studio video project — change its text, position, size, color, timing, or typewriter settings (speed, caret, sound).

### Fonts & Typography (7)

Handwriting-to-font creation from a template photo, uploaded font families, applying a font to an appearance slot, and exporting the packaged files.

- `applyFont` [write] [consent] — Apply an uploaded font to a workspace appearance slot (workspaceFont, pageBodyFont, or monoFont).
- `createFontFromImages` [write] — Start a font from one or more uploaded images of the owner's handwriting or lettering, plus an optional style prompt.
- `deleteFont` [write] [destructive] [consent] — Delete a font family and all its variants.
- `exportFontPackage` [write] [consent] [external] — Export a font family package (.ttf + .otf + .woff2 + license/metadata ZIP).
- `getFont` [read] — Read one font variant or handwriting job status.
- `listFonts` [read] — List your uploaded and handwriting font families plus in-progress jobs.
- `resetFont` [write] [consent] — Reset an appearance font slot back to the default bundled typeface.

### Agents & Machines (10)

Dispatch agents to your own attached hardware, watch runs, and collect results.

- `getAgentResult` [read] — Read the outcome of a dispatched agent session by its conversationId — the orchestrator readback that completes the dispatch→readback→synthesize loop.
- `gradeRun` [write] — Grade one of your agent runs — record whether it was "useful", "partial", or "failed", plus an optional failure mode when it fell short ("grounding" | "instruction-following" | "format" | "tool-use"…
- `listAgentSessions` [read] — List your live agent sessions — every non-terminal agent currently queued or running across your machines, with its title, lifecycle state, the machine it's bound to, last activity, its `provenance`…
- `listMachines` [read] — List the machines attached to your account that can run agents — each with its name, lifecycle status, derived liveness, and last-seen heartbeat.
- `readAgentOutput` [read] — Read back what a dispatched agent session actually PRODUCED — its full transcript, final output, and tool-call log — by conversationId.
- `reportPresence` [write] — Report YOUR OWN presence as a local Ora session — the orchestrating session running in the user's editor/desktop (e.g.
- `runAgent` [write] [external] — Start (spawn) an autonomous agent on one of your machines to carry out a task.
- `runOnMachine` [write] [destructive] [external] — Run a single shell command on one of your machines (a MachineSync box) through The Cloud, and stream its output back into the Agents view — box ops without a physical terminal (update the daemon, tai…
- `stopAgent` [write] — Stop one of your running agent sessions — a graceful halt of an agent you started, for a runaway, duplicate, or no-longer-needed run.
- `tagSession` [write] — Add tags to or remove tags from one of YOUR agent sessions — the exact mirror of `tagPage`, applied to a dispatched run instead of a page.

### Loops (9)

Scheduled recurring agent runs — create, customize, start, pause, and run now.

- `createLoop` [write] — Create a Loop: a recurring AI recipe (prompt + style preset) that fires on a cadence (interval/cron/idle) against an optional target (a repo, Space, Studio app, or task), with a model, write policy,…
- `customizeLoop` [write] — Edit a Loop's shared recipe: its prompt, style preset (archetype), or write-policy CEILING.
- `listLoopModels` [read] — List the model ids a Loop can be pinned to (the same picker the Loops tab's create/edit flow uses).
- `listLoops` [read] — List the caller's Loops with live status (active/paused/stopped), pausedReason, write policy, cadence, target, next/last run time, whether consent is stale, and the latest recap.
- `pauseLoop` [write] — Pause a Loop — it stops firing on its cadence but keeps its config, recipe, and run history intact, and can be resumed with startLoop.
- `runLoopNow` [write] [external] — Fire one Loop run immediately, off-cadence (never advances its schedule).
- `startLoop` [write] — Resume a paused Loop (or confirm an active one stays active) so it fires on its cadence again.
- `stopLoop` [write] — Stop a Loop for good — retires it from the scheduler (status: stopped).
- `updateLoop` [write] — Edit an existing Loop's instance config: cadence (trigger), target, model, budgets, concurrency, or its own write policy (never above the recipe's ceiling — use customizeLoop to raise the ceiling its…

### GitHub & Code (13)

Repos, issues, pull requests, code search, and the read/branch/commit path to opening a PR.

- `commitFiles` [write] [external] — Commit one or more files to a feature branch on a connected GitHub repo (multi-file atomic commit).
- `createBranch` [write] [external] — Create a branch on a connected GitHub repo from a named base.
- `createIssue` [write] [external] — Create an issue in a GitHub repository.
- `getPullRequest` [read] [external] — Get one GitHub pull request in detail, including diff stats.
- `listIssues` [read] [external] — List issues for a GitHub repository.
- `listPullRequests` [read] [external] — List pull requests for a GitHub repository.
- `listRepos` [read] [external] — List the user's GitHub repositories across every connected account.
- `listRepoTree` [read] [external] — Browse a connected GitHub repo's file tree at a ref, optionally scoped to a path and depth.
- `mergePullRequest` [write] [destructive] [consent] [external] — Request a merge of a connected GitHub repo's pull request.
- `openPullRequest` [write] [external] — Open a pull request on a connected GitHub repo.
- `readRepoFile` [read] [external] — Read one file from a connected GitHub repo at any ref — the reliable read path for drafting a diff in chat.
- `reviewPullRequest` [write] [destructive] [external] — Submit a review on a connected GitHub repo's pull request — APPROVE, REQUEST_CHANGES, or COMMENT — acting as the user's connected GitHub account.
- `searchCode` [read] [external] — Search code across the user's GitHub repositories with GitHub code-search syntax.

### Commerce (29)

Storefront catalog, products, variants, inventory, and Amazon product resolution.

- `archiveProduct` [write] [consent] — Archive ONE catalog product — the SAFE way to retire an item.
- `bindSpacePaymentAccount` [write] [consent] — Bind a personal Stripe Connect account to a Space so Offers charge through it (e.g.
- `bindStorefrontOwner` [write] [consent] — Scope a Studio app's storefront to ONE brand (Space) so it serves only that brand's products — the fix for a multi-brand account whose storefront shows every brand at once.
- `commerceConfirmCart` [read] — Render the inline Amazon order-confirmation card for one product the user chose.
- `commerceFindItem` [read] — Find Amazon products for an 'order this' / 'add this to cart' intent.
- `createAddOn` [write] — Attach ONE add-on (modifier) to a product — e.g.
- `createOffer` [write] — Create a Space Offer as a PRIVATE draft (never auto-publishes).
- `createVariant` [write] — Add ONE size/variation to a product — e.g.
- `deleteAddOn` [write] [destructive] — Remove ONE add-on (modifier) from a product.
- `deleteProduct` [write] [destructive] [consent] — Request PERMANENT deletion of ONE catalog product and its variants/add-ons.
- `deleteVariant` [write] [destructive] — Remove ONE variation from a product.
- `getOffer` [read] — Get one Offer by id — pricing, publish state, Stripe sync ids, and whether the Space payment account is ready.
- `getProductRelations` [read] — Read ONE product's full structure — its variations (sizes, each with an absolute price) and its add-ons / modifier lists (each with a price delta, and its group name + single/multiple selection).
- `getStorefrontState` [read] — Diagnose a Studio app's storefront: the owner the product embed resolves to, the catalog's product count broken down by publish state (draft / active / archived / storefront-published), and a plain-l…
- `importProductsFromTable` [write] — Promote a Cloud Table into real commerce products for a Studio app in one step — the connector-independent path to a live catalog.
- `listOffers` [read] — List Offers owned by a Space (including private drafts).
- `listProducts` [read] — List a Studio app's catalog products with each item's publish state (draft / active / archived / published / hidden), effective storefront price, and currency.
- `listSpacePaymentAccounts` [read] — List the caller's personal Stripe Connect accounts and whether each is bound to a Space — the picker for "use Teka Stripe on ENOK".
- `moveProductsToSpace` [write] [consent] — File one or more catalog products under a brand (Space) so a Space-bound storefront serves only that brand and publish-all scoped to it never sweeps a sibling — the fix for a multi-brand account whos…
- `publishAllProducts` [write] [consent] — Publish EVERY draft product in a Studio app's catalog to the storefront in one call — the "go live" verb for a freshly migrated catalog where every item landed as draft.
- `publishProduct` [write] [consent] — Publish ONE catalog product to a Studio app's storefront — flips it from draft (or archived) to active so the product embed serves it.
- `setInventory` [write] — Set the on-hand inventory count on a product (turns inventory tracking on) or on one variant.
- `setOfferVisibility` [write] [consent] — Set an Offer public (listed + buyable) or private (hidden).
- `suggestAmazonProducts` [read] — Suggest Amazon products in chat as affiliate-tagged shopping cards so the user can buy and commission flows to Teka on the resulting cart.
- `unpublishProduct` [write] [consent] — Unpublish ONE catalog product from a Studio app's storefront — flips it from active back to draft, pulling it off the storefront while keeping the product row intact.
- `updateAddOn` [write] — Edit ONE add-on (modifier) in place — name, price delta, required flag, availability, order, or its group (modifierListName / selectionType).
- `updateOffer` [write] — Update an Offer's name, description, or pricing.
- `updateProduct` [write] — Edit ONE catalog product in place — name, description, base price (in minor units, e.g.
- `updateVariant` [write] — Edit ONE product variant (a price tier / SKU) in place — name, price (minor units), SKU, and availability.

### Profiles (7)

Public profile pages, link and text blocks, and visibility.

- `createProfileLinkBlock` [write] — Create a link block on a Profile page — one link rendered as a rich preview tile.
- `createProfilePage` [write] — Create a Page on a Profile — a bento-grid layout of visual tiles.
- `createProfileTextBlock` [write] — Create a rich-text block on a Profile page — bio text, headings, or descriptive content.
- `fetchProfileLinkMetadata` [read] [external] — Fetch rich metadata for a URL — title, description, favicon, thumbnail, and platform data (YouTube stats, Instagram posts, Spotify, Pinterest, GitHub, LinkedIn, TikTok, any OpenGraph site).
- `listProfiles` [read] — List the user's Profiles — public-facing profile surfaces, separate from private Spaces.
- `setProfileVisibility` [write] [consent] — Request a Profile visibility change (public ↔ private).
- `updateProfile` [write] — Update a Profile's display name, bio, and slug — identity and content only.

### Apps & Assets (4)

The workspace app launcher plus brand-mark and character-asset lookup.

- `fetchBrandMark` [read] [external] — Fetch a vendor's REAL brand mark from their own site — favicon / .well-known / brand assets — as an SVG with recorded provenance, never a drawn one.
- `fetchDigiAsset` [write] — Materialize an exact Digi — one of The Cloud's character sprites — into a Studio app's assets as a transparent SVG at assets/digis/<digiId>.svg, ready to reference from the app's markup (e.g.
- `listApps` [read] — List the apps available in The Cloud.
- `listDigiLibrary` [read] — List the addressable Digis — The Cloud's exact character sprites (Ora, the Alpaca, and the agent archetypes like Scout / Guide / Oracle).

### Import & Migration (3)

Bring an existing Notion workspace into The Cloud.

- `getNotionImportStatus` [read] — Check the progress of a background Notion import started by importFromNotion.
- `importFromNotion` [write] [external] — Migrate the Notion pages/databases shared with The Cloud into Pages.
- `listNotionPages` [read] [external] — Preview the Notion pages and databases your connected Notion workspace shared with The Cloud — before importing.

### Governance & Consent (7)

The consent floor as tools: record and revoke consent, mint and revoke scoped access, and read the telemetry ledger.

- `listCuratedRooms` [read] — List the curated outbound Waiting Rooms you have minted — the raise pipeline.
- `listStaleCuratedRooms` [read] — List your STALE Waiting Room grants — the union of two labeled sets: reason "pre_relabel" (bare curated_room grants never claimed, curated, or labeled — the pre-relabel board noise) and reason "expir…
- `listTelemetryLedger` [read] — List your Telemetry Ledger — the append-only, owner-visible record of everything that left your custody (when, source, destination, purpose, scope, trigger).
- `mintCuratedRoom` [write] — Mint a curated outbound Waiting Room for one recipient — the room IS the artifact you send.
- `recordConsent` [write] — Record consent to email a contact (or a whole filtered set) under a scope — the action that makes a contact sendable.
- `revokeConsent` [write] — Revoke a previously recorded consent scope from a contact (or a whole filtered set) — the inverse of recordConsent.
- `revokeCuratedRoom` [write] [destructive] — Revoke ONE Waiting Room grant you own — close a live door.

### Contribution Ledger (6)

Append-only provenance + credits accounting: register signed contributions against artifacts, walk their lineage, and read the credits they earned.

- `getContribution` [read] — Read one contribution record by id — contributor, signature, artifact, and license grant.
- `getCreditBalance` [read] — Read your credit balance — the total plus a breakdown by event type (usage, bounty, learning).
- `getLineage` [read] — Walk a contribution's lineage — its full ancestry (what it derived from) and descendants (what derived from it).
- `listContributions` [read] — List contributions by member or by artifact.
- `listCreditEvents` [read] — List the credit events a contribution earned (usage, bounty, or learning), with amounts and their source references.
- `registerContribution` [write] — Record an append-only contribution: a signed provenance record attaching a member to an artifact (a page, memory, table, studio app, or a skill/agent/template asset), with a license grant and optiona…

### Workspace Admin (14)

Account provisioning, invites, signup approval, and staged account content.

- `approveSignup` [write] — Admit a pending applicant into The Cloud — the consent-gated owner action that grants full access (unlocks paid compute) for that account.
- `createAccountInviteLink` [write] [consent] — Mint the ONE-TIME claim link for a staged account — the /waiting-room/<token> URL the prospect opens to adopt the account (which atomically severs the builder).
- `declineSignup` [write] — Decline a pending applicant — they stay out of The Cloud (no access, no paid compute).
- `listGenomes` [read] — List the starter genomes — the authorable blueprints a workspace mint instantiates.
- `listPendingSignups` [read] — List the people waiting in the Gate — every applicant still pending admission (who they are, their email, when they applied, and their linked CRM lead).
- `listProvisionedAccounts` [read] — List the provisioned accounts roster — every staged account with its lifecycle (staged-unclaimed → adopted, with builder access provably severed at adoption), active operator grants, and each invite'…
- `provisionAccount` [write] [consent] — Stage a PROVISIONED ACCOUNT for a prospect — a real account built for them before they ever sign in.
- `readGenome` [read] — Read one genome in full — its versioned slot grammar: which surfaces carry the recipient's brand (identity), which Spaces/pages get created (substance), which systems get armed (booking / form / stud…
- `revokeAccountInvite` [write] [consent] — Revoke ONE pending claim-link invite for a staged account — the link immediately stops resolving and can never claim.
- `revokeProvisionedAccess` [write] [consent] — Kill EVERY door into a staged account: revokes all active operator grants (each grant's minted operator key dies with it) and all pending claim-link invites, in one call.
- `sendAccountInvite` [write] [destructive] [consent] [external] — Email a staged account's claim link to its prospect — a REAL external send that cannot be unsent, so confirm per action like sendEmail.
- `setClaimPreview` [write] [consent] — Set the CLAIM-LANDING curated preview for a staged account — the headline and optional lead the prospect sees on the /waiting-room page before they take over.
- `stageAccountContent` [write] [consent] — Register PREPPED CONTENT into a staged account's package manifest — how you prep a Space for someone.
- `waitlistSignup` [write] — Waitlist a pending applicant — hold them off the active queue without a decision either way (still no access, no paid compute).

### Whop (3)

The connected Whop account through the generalized credential vault — connection status, allowlisted reads (memberships, companies, plans), and confirm-gated writes under the hardened read-allowlist doctrine.

- `whopConnectionStatus` [read] — Check whether the user has connected their Whop account and read the connection health (masked key prefix, method, last used).
- `whopReadResource` [read] [external] — Read a Whop resource — memberships, companies, plans, access passes, and other read endpoints.
- `whopWriteResource` [write] [external] — Write to a Whop resource — create/update/cancel memberships, plans, and any mutating endpoint.
