Tools
All tools operate on the platform of the admin who owns the key. Tools marked write require a read_write key; with a read key they return an error result and change nothing.
Write tools also update the platform's Firestore mirror (what the mobile apps read) exactly like dashboard writes do. Their response carries mobileMirror: synced, skipped (platform without a Firebase project) or failed (logged server-side; the MySQL write stands).
Results are returned as JSON text in the tool result. Errors (not found, wrong scope, guard rails) come back as a tool result with isError: true and a human-readable message.
Enum values used below:
content type:video embed,wistia,searchie,resi,download,restream,poll,video,audio,article,live streaming,link,zoom,internallink,mux,book,meetingcontent visibility:public,free,basic,premium,group,hiddengroup visibility:public,private,hidden
Content
| Tool | Scope | Parameters | Notes |
|---|---|---|---|
list_content | read | limit (1-100, default 25), offset (default 0), type, visibility, published_only (default false) | Paginated summaries ordered by most recently updated. Returns { total, offset, limit, items }. |
get_content | read | id | Full detail for one item, including description, media URIs and moderation/transcoding status. |
search_content | read | query, limit (default 20) | Case-insensitive substring match on title or description. |
create_content | write | title, type, visibility (default public), description, slug, featuredImage, contentURI, video, duration, chatEnabled, collectionIds, publishedDate | Creates a row owned by the key owner. Omit publishedDate to leave it unpublished. chatEnabled turns on comments. collectionIds must belong to the platform. featuredImage takes a storage path from get_image_upload_url or a full URL. Video upload and transcoding still happen through the dashboard. |
update_content | write | id, plus any of title, description, slug, visibility, featuredImage, contentURI, video, duration, ctaBtnText, ctaBtnUrl, featured, chatEnabled, collectionIds | Only provided fields change. collectionIds replaces the full set ([] removes all). Content cannot be moved between platforms. |
publish_content | write | id, publishedAt (ISO, optional) | Sets publishedDate to the given time or now. |
list_collections | read | search, limit (default 50), offset | Collections on the platform ordered by name. Returns { total, offset, limit, items: [{ id, name, slug }] }. |
get_image_upload_url | write | fileName (png, jpg, jpeg, webp, gif) | Returns { uploadUrl, path, contentType, expiresInSeconds }. PUT the file to uploadUrl with the Content-Type header, then pass path as featuredImage. The URL expires after one hour. |
delete_content | write | id | Permanent. Removes the row, its Storj files and the Firestore mirror, the same cleanup as the dashboard delete. |
Groups
| Tool | Scope | Parameters | Notes |
|---|---|---|---|
list_groups | read | limit (default 25), offset, visibility | Group summaries. |
get_group | read | id | Full group detail (description, cover, headline, AI settings). |
list_group_members | read | group_id, limit (default 50), offset, role (member or admin) | Members with their membership role and basic user info. |
list_group_posts | read | group_id, limit (default 25), offset | Posts on the group's wall (content attached with ContentGroup.type = "post"), newest first. Scheduled posts are included with scheduled: true; comments are not posts and are not returned. |
create_group | write | name, slug, description, visibility (default public), coverImg, headlineText | The key owner is recorded as the group creator. |
update_group | write | id, plus any of name, description, visibility, coverImg, headlineText, headlineBtnText, headlineBtnUrl | Only provided fields change. |
add_group_member | write | group_id, user_id, role (member default, or admin) | The user must already exist on the platform. Updates the role if the membership exists. Returns { action, groupId, userId, role, mobileMirror }. |
Users
| Tool | Scope | Parameters | Notes |
|---|---|---|---|
list_users | read | limit (default 50), offset, role, status (active or pending) | Returns only public fields: id, name, email, role, status, city, state, photo, banned, team flag, timestamps. Never passwords, keys or additionalInfo. |
search_users | read | query, limit (default 25) | Matches name or email. |
get_user | read | id | One user, same public fields. |
update_user_role | write | id, role (free, basic, premium, creator) | Cannot set admin, cannot change an existing admin and cannot change the key owner. |
Reports
All report tools are read-only.
| Tool | Parameters | Notes |
|---|---|---|
get_engagement_report | start, end (ISO, default last 30 days) | Platform totals: users, content, groups and analytics events in the window (analyticsEvents, plus analyticsBreakdown.contentEvents / userEvents). |
get_group_engagement_report | group_id | Member counts by role and content attached to the group. |
get_content_stats | id, start, end | Type, visibility, publish state and analytics events for one item. |