Skip to content
On this page

Intents Reference

Auto-generated from application and service manifests.
Generated on: 2026-08-28

Table of Contents

Applications

Services


Application Intents

Auth (auth)

User login flow

logout

Logout from system

No parameters.


Calendar (events)

open-calendar

Opens the calendar view, optionally filtered by a specific source type (all, room, group, user, or community event).

ParameterTypeRequiredDescription
sourcestringYesThe source type for the calendar filter. Must be one of: all, room, group, user, community. Use "all" to show meetings from every source type.
idstringNoThe unique identifier of the room, group, or user.
fullNamestringNoThe display name of the room, group, or user.
communityIdstringNoThe unique identifier of the community (used when source is community).
communityFullNamestringNoThe display name of the community.
eventIdstringNoThe unique identifier of the community event.
eventFullNamestringNoThe display name of the community event.

Calls (videochat)

connect-to-meeting

Connects to a specific meeting by room, prop, group, or user and manages video chat and presentation settings.

ParameterTypeRequiredDescription
roomIdstringNoThe unique identifier of the room to connect to.
propIdstringNoThe unique identifier of the prop to connect to.
groupIdstringNoThe unique identifier of the group to connect to.
userIdstringNoThe unique identifier of the user to connect to.
withLocalTracksbooleanNoIf true, view shared screens or presenter content without joining the video chat.
autoConnectToVideochatbooleanNoIf true, automatically join the video chat after connecting.

open-source-picker

Opens the "Open Videochat from" source picker (Rooms, Groups, Contacts, Textchats) as the inline full-view list. Selecting an item starts a video chat with that source.

ParameterTypeRequiredDescription
standalonebooleanNoIf true, render the picker as a standalone window with no back button (e.g. when launched from the native app, where there is no video chat to return to).

Chats (textchat)

open-channel

Opens a text chat session based on channel, user, group, room, or prop.

ParameterTypeRequiredDescription
channelIdstringNoThe unique identifier of the text channel to open.
userIdstringNoThe unique identifier of the user for a direct chat.
groupIdstringNoThe unique identifier of the group to open a group chat.
roomIdstringNoThe unique identifier of the room to open a room chat.
propIdstringNoThe unique identifier of the prop to open a prop-specific chat.

close-channel

Closes the currently open channel and returns to the channel list. Mirrors the toolbar back button used on mobile/narrow layouts.

No parameters.

share-card

Shares one or more entities into a chat as rich, interactive cards — Rooms, Groups, Communities, Meetings, or Contacts — instead of plain links. Pass "id" for a single card or "ids" for several in one message. All cards in one call must be the SAME cardType (mixed types need separate calls). Posts into the currently open channel by default; pass channelId to target a specific channel.

ParameterTypeRequiredDescription
cardTypestringYesThe entity type to share: "room", "group", "community", "meeting", or "contact". Applies to every id in this call.
idstringNoA single entity id to share (room/group/community id, user id for a contact, or — for meetings — the occurrence id from list-events; a one-off meeting id also works). Use this OR "ids".
idsstring[]NoSeveral entity ids to share as multiple cards in one message — all of the given cardType (for meetings, occurrence ids from list-events). Use this OR "id".
channelIdstringNoTarget channel id. Defaults to the currently active channel.
networkIdstringNoThe network the entities belong to. Defaults to the active network.

get-ui-state

Read-only. Returns a snapshot of what the chat is currently showing — the channels list, an open channel, or both side by side (wide layout) — plus the in-app back action. Lets non-web clients (e.g. the Android device back button) mirror the toolbar back-button navigation. Changes nothing. Returns { view: "list" | "channel" | "list-and-channel", isWide, activeChannelId, openThreadId, threadTakeover, canNavigateBack, backAction: "close-thread" | "close-channel" | null }.

No parameters.

options

Sets the text‑chat view layout (e.g. wide or narrow mode).

ParameterTypeRequiredDescription
isWidebooleanYesWhether to enable wide‑mode layout in the chat view.

open-room-ai-chat

Opens an AI‑powered chat session scoped to a specific room.

ParameterTypeRequiredDescription
roomIdstringYesThe unique identifier of the room in which to start the AI chat.

send-message

Sends a rich text message to a text-chat channel on behalf of an initiator (e.g. an AI agent or automated service). Silent — does NOT open or change the visible chat. Use channelId when you know it; otherwise provide userId for a direct message.

ParameterTypeRequiredDescription
textstringYesThe message body to send.
channelIdstringNoTarget channel ID. Takes precedence over userId.
userIdstringNoTarget user ID for a direct message. Ignored if channelId is provided.
buttonsobject[]NoOptional interactive buttons to attach to the message as a rich card.

Contacts (contacts)

Manage and chat with your personal connections.

show-user-connections

Open the connections view for the specified user

ParameterTypeRequiredDescription
userIdstringYesThe unique identifier of the user to display

Content Studio (content-studio)

open-create

Open the content upload page with an optional upload destination

ParameterTypeRequiredDescription
roomIdstringNoID of the room to upload to
communityIdstringNoID of the community to upload to
channelIdstringNoID of the channel to upload to
groupIdstringNoID of the group to upload to
labelstringNoLabel to apply to the content
departmentstringNoDepartment associated with the content
themestringNoTheme to apply to the upload page

open-edit

Open the edit page for a specific content item

ParameterTypeRequiredDescription
contentItemIdstringYesID of the content item to edit
roomIdstringNoID of the room context
communityIdstringNoID of the community context
channelIdstringNoID of the channel context
groupIdstringNoID of the group context
labelstringNoLabel to apply to the content
departmentstringNoDepartment associated with the content
themestringNoTheme to apply to the edit page

Open the search page

No parameters.

Navigate to a specific route within Content Studio

ParameterTypeRequiredDescription
routestringYesThe route path to navigate to within Content Studio

Content Studio (staging-content-studio)

open-create

Open the content upload page with an optional upload destination

ParameterTypeRequiredDescription
roomIdstringNoID of the room to upload to
communityIdstringNoID of the community to upload to
channelIdstringNoID of the channel to upload to
groupIdstringNoID of the group to upload to
labelstringNoLabel to apply to the content
departmentstringNoDepartment associated with the content
themestringNoTheme to apply to the upload page

open-edit

Open the edit page for a specific content item

ParameterTypeRequiredDescription
contentItemIdstringYesID of the content item to edit
roomIdstringNoID of the room context
communityIdstringNoID of the community context
channelIdstringNoID of the channel context
groupIdstringNoID of the group context
labelstringNoLabel to apply to the content
departmentstringNoDepartment associated with the content
themestringNoTheme to apply to the edit page

open-search

Open the search page

No parameters.

Navigate to a specific route within Content Studio

ParameterTypeRequiredDescription
routestringYesThe route path to navigate to within Content Studio

Groups (groups)

open

Opens the groups view and navigates to a specific group.

ParameterTypeRequiredDescription
groupIdstringYesThe unique identifier of the group to open.

LLM Debug (iframe_llm_debug)

Live LLM / agent activity debug panel (your own agents)

open-session

Opens the LLM Debug panel and navigates to a specific debug session (chat, agent, or sub-agent) by its session ID.

ParameterTypeRequiredDescription
sessionIdstringYesThe LLM debug session ID to open.

open-agent

Opens the LLM Debug panel and navigates to a specific agent's page by its agent ID (its persistent session). Pass sessionId to target one of the agent's runs instead.

ParameterTypeRequiredDescription
agentIdstringYesThe agent ID (its persistent agent session ID) to open.
sessionIdstringNoA specific session of the agent to open instead of its main page.

open-run

Opens the LLM Debug panel on a specific agent/chatbot RUN by its run id. Pass the entity kind + id and the run id from the originating message.

ParameterTypeRequiredDescription
entityKindstringYesThe entity kind: "agent" or "chatbot".
entityIdstringYesThe agent or chatbot id the run belongs to.
runIdstringYesThe run id (agentRunId/chatbotRunId) to open.

Media (cms)

Content management module

show-chat-channel

Open and display the specified chat channel

ParameterTypeRequiredDescription
channelIdstringYesThe unique identifier of the chat channel to display

show-folder

Navigate to and open a specific folder in the CMS by its folder ID

ParameterTypeRequiredDescription
folderIdstringYesThe unique identifier of the folder to open
resourceIdstringNoA resource inside that folder to open in the Edit side panel after navigating.

show-resource

Reveal a resource in the CMS file browser by its resource ID — navigates to the folder holding it (or to its section root when it is not in a folder), selects it and opens its Edit side panel. Use this when you only have a resource id and want to show the user where that file lives; use preview-resource instead to just view its contents.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource to reveal

preview-resource

Open a resource (file) in the CMS preview viewer by its resource ID

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource to preview

show-my-files

Navigate to the user's own files in the CMS (the "My Files" / "My Content" view). Use this when the user asks about their files, uploads, or personal content — do not use show-folder for this.

No parameters.

show-application-storage

Open an application's storage folder in the CMS — the files that app has stored under the current user, shown at Applications › <app>. Provide the application id (e.g. "valuguru"). The app must declare storage: true in its manifest.

ParameterTypeRequiredDescription
applicationIdstringYesThe id of the application whose storage folder to open (e.g. "valuguru").
resourceIdstringNoA resource inside that storage folder to open in the Edit side panel after navigating.

show-community-channel

Open and display the specified community channel

ParameterTypeRequiredDescription
communityIdstringYesThe unique identifier of the community
communityChannelIdstringYesThe unique identifier of the channel within the community

Metaverse (metaverse)

set-route

initiate the opening of the Metaverse 3d application with spsific route

ParameterTypeRequiredDescription
routestringYesThe route to set. Defines the current view or action in the application. If not provided, the default application state will open.

open-room

Open a specific room in the ValuVerse 3D environment. Both networkId and roomId are required. Use the networkId provided in context.

ParameterTypeRequiredDescription
networkIdstringYesThe network the room belongs to. Use the networkId from context.
roomIdstringYesThe ID of the room to open.

preview-prop

Navigate the camera to a specific prop in a room, opening the Metaverse view. networkId, roomId, and propId are all required. Only call this when the user explicitly asks to show, open, navigate to, or view a prop. Do not call this automatically when listing or describing props.

ParameterTypeRequiredDescription
networkIdstringYesThe network the room belongs to. Use the networkId from context.
roomIdstringYesThe ID of the room containing the prop.
propIdstringYesThe ID of the prop to navigate to.

Profile (profile)

Your user profile

show-current-user

Opens the profile view for the currently signed-in user.

No parameters.

show-user

Shows the profile view for a specific user, or the current user if no userId is provided.

ParameterTypeRequiredDescription
userIdstringNoThe unique identifier of the user whose profile to open. Defaults to the current user.

open-profile-with-mode

Opens the profile view for a user and optionally navigates to a specific mode such as the marketplace.

ParameterTypeRequiredDescription
userIdstringNoThe unique identifier of the user whose profile to open. Defaults to the current user.
offerIdstringNoThe identifier of the marketplace offer to display.

Resources Viewer (preview)

preview

Opens the resource viewer to preview a specific resource.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource to preview.

Rooms (rooms)

View and manage rooms

open

Opens the Rooms app on a chosen list. With no parameter the app simply opens on whatever it was last showing.

ParameterTypeRequiredDescription
tabstringNoWhich list to show. Defaults to the currently visible one.

show-room

Opens the Rooms app on a specific room's detail view — info, members and settings.

ParameterTypeRequiredDescription
roomIdstringYesThe unique identifier of the room to show.

invite-to-room

Opens the room invitation dialog for a specific room.

ParameterTypeRequiredDescription
roomIdstringYesThe unique identifier of the room to invite users to.

Social (community)

create-post

Open view and open post editor

ParameterTypeRequiredDescription
resourceIdstringYesResource id for post attachment
rootChannelobjectYesRoot chanel of community
communityobjectYesCommunity data
pathstringYesFull path to channel or subchannel
titlestringNoPre-fills the post title in the editor. Optional; the editor opens with this title instead of blank.
bodystringNoPre-fills the post body (Markdown) in the editor. Optional; the editor opens with this body instead of blank.

create-channel

Opens the community view and starts channel creation in a specific community context.

ParameterTypeRequiredDescription
communityobjectYesCommunity data object.
contentDirectoryIdstringNoThe content directory identifier for the new channel.
rootChannelobjectNoRoot channel of the community.
subChannelIdstringNoThe sub-channel identifier to navigate to.
modestringNoThe creation mode for the channel.
contentDirectoryTitlestringNoDisplay title for the content directory.

open-community

Opens the community view and navigates to a community by its ID. Use when you only have a communityId and no specific channel to target — the app will land on the first available channel.

ParameterTypeRequiredDescription
communityIdstringYesThe community id.

show-channel

Opens the community view and navigates to a specific channel. Use communityId from AI context. For a root channel: pass its id as rootChannelId, omit subChannelId. For a sub-channel: the sub-channel object in AI context has a rootChannelId field — pass that as rootChannelId, and the sub-channel id as subChannelId.

ParameterTypeRequiredDescription
communityIdstringYesThe community id from AI context.
rootChannelIdstringYesThe top-level root channel id. Never a sub-channel id.
subChannelIdstringNoThe sub-channel id to navigate into. Omit when navigating to the root channel itself.

show-post

Opens the community view and navigates to a specific post. Use communityId from AI context. For a post in a root channel: pass the channel id as rootChannelId, omit subChannelId. For a post in a sub-channel: pass the sub-channel's rootChannelId as rootChannelId, and the sub-channel id as subChannelId. Pass the post id as messageId.

ParameterTypeRequiredDescription
communityIdstringYesThe community id from AI context.
rootChannelIdstringYesThe top-level root channel id. Never a sub-channel id.
messageIdstringYesThe post id from AI context.
subChannelIdstringNoThe sub-channel id containing the post. Omit when the post is in the root channel itself.

Valu Games (games)

Valu board games

open

Open the Valu Games app.

No parameters.


Valu Guru (valuguru)

open

Opens the Valu Guru app on a chat with the built-in Valu Guru assistant, without sending anything. Resumes the most recent built-in-assistant conversation, or lands on the empty new-chat screen when there is none. Custom chatbot conversations are never resumed, and nothing is created on the server — a session appears only once a message is sent.

ParameterTypeRequiredDescription
newChatbooleanNoWhen true, always lands on the empty new-chat screen instead of resuming the most recent Valu Guru conversation.

start-session

Opens the Valu Guru app and starts a brand-new conversation session with an initial message. Always creates a new session regardless of existing ones.

ParameterTypeRequiredDescription
messagestringYesThe initial user message to send in the new session.
chatbotIdstringNoChatbot ID to start the session with. Accepts a personal "my chatbots" id, a published LIBRARY chatbot id (auto-added to "my chatbots" if not already there), or 'default'. Defaults to the default Valu Guru chatbot ('default').

show-agents

Opens the Valu Guru app and switches to the Agents tab in the left panel.

No parameters.

open-chat

Opens the Valu Guru app and navigates to a specific chat session by ID.

ParameterTypeRequiredDescription
chatIdstringYesThe chat session ID to open.

open-agent

Opens the Valu Guru app and navigates to a specific agent chat by ID.

ParameterTypeRequiredDescription
agentIdstringYesThe agent ID to open.

open-chatbot

Opens the Valu Guru app on a library chatbot's detail page. Unlike open-chat, the target is not personal — any user in the network can view it (used e.g. by the bot badge on shared chatbot replies).

ParameterTypeRequiredDescription
chatbotIdstringYesThe library chatbot ID whose detail page to open.

create-chatbot

Opens the Valu Guru app on the new-chatbot creation wizard, optionally pre-filled. Pass instructions to land on the Design step fully filled in, or just prompt to land on the Describe step with the task pre-typed and ready to generate.

ParameterTypeRequiredDescription
promptstringNoPlain-language task description to seed the Describe step (e.g. "a bot that answers HR policy questions"). Ignored if instructions is also given.
instructionsstringNoFull system-prompt instructions for the chatbot. When given, the wizard opens straight on the Design step instead of Describe.
namestringNoChatbot display name.
descriptionstringNoShort chatbot description shown in the library/list.
iconstringNoFont Awesome icon class (e.g. "fa-light fa-robot") or a DiceBear avatar URL.
skillIdsstring[]NoIDs of skills (from the shared Skills Catalogue) to pre-select for the chatbot.

Valu Puzzles (puzzles)

Valu puzzle games

start-puzzle

Open Valu Puzzles and launch a specific puzzle, optionally with a score-to-beat challenge from another user.

ParameterTypeRequiredDescription
puzzleIdstringYesWhich puzzle to start. One of: "sliding" (Sliding Puzzle), "memory" (Memory Match), "sudoku" (Mini Sudoku), "wordscramble" (Word Scramble).
scoreToBeatnumberNoTarget score (0–999) the recipient should try to beat. Shown as a challenge banner above the puzzle; if the player exceeds it the result screen reads "Beat <challengerName>!".
challengerNamestringNoDisplay name of the user who issued the challenge. Shown on the challenge banner alongside the target score.

Service Intents

Application Service (Application)

Issues short-lived signed identity JWTs for iFrame (mini-app) applications. Allows an embedded application to obtain a signed token proving the current user's identity to the mini-app's own backend.

Source: src/Services/Application/ApplicationService.js

get-identity-token

Issues a short-lived signed identity JWT for the calling mini-app. The target application is inferred from the intent sender — no parameters needed. Requires the user to be authenticated. JWT claims: sub=userId, aud=callingApplicationId, iss=platform, exp=5min.

No parameters.

close_all

Closes all currently loaded applications and clears all docks. Unlike the normal close flow, does not re-open the default application — the UI stays blank with no application displayed.

No parameters.

expand-application

Expands the calling application to fill the dock by closing every other loaded application. The target application is inferred from the intent sender — no parameters needed. Mirrors the "Expand Application" default header action for iframe apps that render their own context menu (header: false).

No parameters.

close-application

Closes the calling application (unloads it from its dock), then re-opens the default network application if nothing is left docked. The target application is inferred from the intent sender — no parameters needed. Mirrors the "Close Application" default header action for iframe apps that render their own context menu (header: false).

No parameters.


Application Storage Service (ApplicationStorage)

Per-application file storage service for uploading, searching, and deleting resources scoped to the calling application and current user.

Source: src/Services/UploadManager/ApplicationStorageService.js

resource-upload

Uploads files to the calling application's storage for the current user.

ParameterTypeRequiredDescription
filesFileListYesThe files to upload.

Searches resources in the calling application's storage for the current user.

ParameterTypeRequiredDescription
limitnumberNoMaximum number of results to return. Defaults to 10.
querystringNoSearch query string.
cursorstringNoPagination cursor for fetching the next page of results.

resource-delete

Deletes a resource from the calling application's storage.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource to delete.

CBAC Service (Cbac)

Badge-based access control (CBAC). Manages policies that grant a permission on a target entity (room, community, or group) to users holding specific badges. Policy mutations require manage permission on the target.

Source: src/Services/Cbac/CbacService.js

list-policies

Lists all CBAC policies configured for a target entity.

ParameterTypeRequiredDescription
networkIdstringYesID of the network the target belongs to.
targetTypestringYesType of the target entity: "room", "community", or "group".
targetIdstringYesID of the target entity.

create-policy

Creates a CBAC policy on a target entity. Valid grantedPermission values depend on targetType: room → room.view / room.comment / room.contribute / room.edit; community → community.join; group → group.join. Requires manage permission on the target.

ParameterTypeRequiredDescription
networkIdstringYesID of the network the target belongs to.
targetTypestringYesType of the target entity: "room", "community", or "group".
targetIdstringYesID of the target entity.
badgeIdsarrayYesOne or more badge IDs required to gain access; must not be empty.
badgeMatchModestringYesHow badges are evaluated: "any" (one badge suffices) or "all" (every badge required).
grantedPermissionstringYesPermission granted when the badge requirement is met. Must be valid for the targetType (see intent description).

delete-policy

Deletes a single CBAC policy by ID. Requires manage permission on the target.

ParameterTypeRequiredDescription
policyIdstringYesID of the policy to delete.
networkIdstringYesID of the network the target belongs to.
targetTypestringYesType of the target entity: "room", "community", or "group".
targetIdstringYesID of the target entity.

list-badges

Lists every badge visible to the current user — badges scoped to their networks plus global ones. Returns an array of {networkId, badgeId, badgeName, badgeDescription, thumbnailId}, where networkId is "all" for a global badge. Use this to resolve a badge name to the badgeId required by search-users-by-badge-id and the policy intents.

No parameters.

search-users-by-badge-id

Lists the users holding a given badge, optionally filtered by a name query. The reverse of looking up which badges a single user holds. Call list-badges first to resolve a badge name to its badgeId. Returns {users, total} where total is the full match count across all pages — page through it with offset/size rather than assuming the first page is everything.

ParameterTypeRequiredDescription
badgeIdstringYesID of the badge whose holders are returned.
querystringNoSearch query to filter badge holders by name. Defaults to an empty string, which returns all holders.
offsetnumberNoPagination offset. Defaults to 0.
sizenumberNoNumber of results to return. Defaults to 10.

CMS Service (CMS)

Content management service for uploading, searching, and deleting resources scoped to rooms, props, communities, channels, and directories.

Source: src/Services/CMS/CMSService.js

resource-upload

Uploads files to a resource storage scoped by belonging (room, prop, community, channel, directory, or post).

ParameterTypeRequiredDescription
filesFileListYesThe files to upload.
communityIdstringNoThe community to associate the uploaded resources with.
channelIdstringNoThe channel to associate the uploaded resources with.
directoryIdstringNoThe directory to associate the uploaded resources with. If omitted and channelId is provided, it is resolved automatically from the channel's contentDirectoryId.
postIdstringNoThe post to attach the uploaded resources to.
roomIdstringNoThe room to associate the uploaded resources with.
propIdstringNoThe prop to move the uploaded resources into.

resource-search

Searches for resources within a given scope (room, prop, community, channel, directory, or post). Each returned resource has an id (and a title/name) — tag every resource you reference in your reply as @[cms-resource:id|title].

ParameterTypeRequiredDescription
communityIdstringNoThe community to search resources in.
channelIdstringNoThe channel to search resources in.
directoryIdstringNoThe directory to search resources in. If omitted and channelId is provided, it is resolved automatically from the channel's contentDirectoryId.
postIdstringNoThe post to load resources for.
roomIdstringNoThe room to search resources in.
propIdstringNoThe prop to search resources in.
limitnumberNoMaximum number of results to return. Defaults to 10.
querystringNoSearch query string.
cursorstringNoPagination cursor for fetching the next page of results.

resource-delete

Deletes a resource or removes it from a prop or post.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource to delete.
communityIdstringNoThe community the resource belongs to.
channelIdstringNoThe channel the resource belongs to.
postIdstringNoThe post to remove the resource from (removes association, does not delete the resource).
roomIdstringNoThe room the resource belongs to.
propIdstringNoThe prop to remove the resource from (removes association, does not delete the resource).

Community Service (Community)

Community service for browsing communities, listing channels, and loading posts within channels.

Source: src/Services/Community/CommunityService.js

search-communities

Search for available communities. Returns community objects with communityId, name, description, and other properties.

ParameterTypeRequiredDescription
querystringNoSearch query to filter communities by name.
limitnumberNoNumber of results to return. Defaults to 10.
afterCommunityIdstringNoPagination cursor — ID of the last community from previous page.

get-community-info

Retrieves detailed information about a specific community by its ID.

ParameterTypeRequiredDescription
communityIdstringYesThe unique community identifier.

get-channels

Lists channels within a specific community. Returns {communityId, channels[]} where each channel has channelId, rootChannelId (same as channelId — use this for entity tags), title, and other properties.

ParameterTypeRequiredDescription
communityIdstringYesThe unique community identifier.
limitnumberNoMaximum number of channels to return. Defaults to 100.

get-posts

Loads posts/messages in a specific channel or sub-channel. Returns {communityId?, rootChannelId, subChannelId?, messages[]}. The rootChannelId and subChannelId in the response are the exact values to use when constructing community-post or community-sub-channel-post entity tags — no need to track them separately.

ParameterTypeRequiredDescription
channelIdstringYesThe root channel ID (use rootChannelId from get-channels result).
communityIdstringNoThe community ID. Pass this so the response echoes it back for entity tag construction.
subChannelIdstringNoSub-channel ID when loading posts from a nested channel. Use the subChannelId field from the app context sub-channel entry.
limitnumberNoNumber of posts to return. Defaults to 10.
afterMessageIdstringNoPagination cursor — ID of the last message from previous page.

Data Provider Service (DataProvider)

Picker service for selecting items from data providers (rooms, contacts, etc.) via modal or inline overlay.

Source: src/Services/DataProvider/DataProviderService.js

pick-single

Opens an interactive picker so the END USER can choose ONE item (a room, contact, group, etc.) and returns their selection. BLOCKS until the user picks or cancels. Returns the selected item object (its shape depends on the provider — typically {id, name, ...}) or null if the user cancelled. Use this when the user's request needs an entity reference and they have NOT named a specific one — e.g. "share this in a group" without naming the group → call with providers: ["groups"]. Do not use to search programmatically; use the provider's own search/list service intent for that.

ParameterTypeRequiredDescription
providersstring[]YesProvider IDs to show as picker sources. Available IDs include: "rooms", "contacts", "groups", "communities", "props", "events". Pass one entry for a single-source picker, or multiple to let the user switch sources via tabs. Example: ["rooms"] or ["contacts", "groups"].
titlestringNoDialog title shown above the picker. Defaults to the provider's built-in title.
widthstringNoCSS width for the modal (desktop only).
heightstringNoCSS height for the modal (desktop only).

pick-multiple

Same as pick-single but lets the END USER select MORE THAN ONE item. BLOCKS until they confirm or cancel. Returns an array of selected items ([{id, name, ...}, ...]) or null if cancelled. Use when the user's request implies multiple targets — e.g. "invite some people to the room" → call with providers: ["contacts"].

ParameterTypeRequiredDescription
providersstring[]YesProvider IDs to show. Same set as pick-single.
titlestringNoDialog title.
confirmLabelstringNoConfirm button label (e.g. "Invite", "Share with"). Defaults to "Select".
confirmIconstringNoConfirm button icon class (Font Awesome, e.g. "fa-light fa-paper-plane-top").
widthstringNoCSS width for the modal (desktop only).
heightstringNoCSS height for the modal (desktop only).

Developer Service (Developer)

Developer Portal service for creating and listing the current user's applications.

Source: src/Applications/DeveloperPortal/Services/DeveloperService.js

create-application

Creates a new application in the Developer Portal. By default the application is served in an iframe from https://web.texpo.io/{userId}/{appSlug} (its slug is derived from the name — lowercased, dashes; deduplicated with -2, -3, … on collision) and that texpo page needs code deployed to it before it shows anything. Pass the optional url to instead point the app's iframe DIRECTLY at an existing external page (no code/build needed) — the created app then opens straight to that URL. Returns the created app's id, devId, slug, URL, and a ready-made tag — a chat entity tag of the form @[application:<appId>|<Name>]. To give the user a clickable link that opens the application inside the platform, paste that tag value verbatim into your reply (do NOT link the raw URL).

ParameterTypeRequiredDescription
namestringYesHuman-readable name for the application. Also used to derive the URL slug.
descriptionstringNoShort description of what the application does.
urlstringNoOptional external URL (http/https) to embed directly in the app's iframe, e.g. https://example.com. When provided, the app frames this page as-is with no build/deploy — the created app opens straight to it. The target site MUST allow third-party framing: many major sites (news portals, Google, most social networks) send X-Frame-Options or a CSP frame-ancestors directive that forbids embedding, and the browser will render them blank. Prefer a site known to permit framing.
iconstringNoFont Awesome icon for the application, in the "fa-light fa-<name>" format (e.g. "fa-light fa-newspaper"). Set this for EVERY app you create, choosing an icon that represents what the app does — if omitted it falls back to a generic lightbulb. Pick the best match from this set: fa-light fa-robot, fa-light fa-brain-circuit, fa-light fa-microchip-ai, fa-light fa-user-robot, fa-light fa-message-bot, fa-light fa-cpu, fa-light fa-binary, fa-light fa-code, fa-light fa-terminal, fa-light fa-database, fa-light fa-network-wired, fa-light fa-satellite-dish, fa-light fa-palette, fa-light fa-pen-fancy, fa-light fa-paintbrush, fa-light fa-music, fa-light fa-camera, fa-light fa-film, fa-light fa-photo-film, fa-light fa-wand-magic-sparkles, fa-light fa-sparkles, fa-light fa-stars, fa-light fa-hat-wizard, fa-light fa-crystal-ball, fa-light fa-graduation-cap, fa-light fa-book-open, fa-light fa-books, fa-light fa-lightbulb, fa-light fa-magnifying-glass-chart, fa-light fa-chart-mixed, fa-light fa-flask, fa-light fa-microscope, fa-light fa-atom, fa-light fa-dna, fa-light fa-briefcase, fa-light fa-user-tie, fa-light fa-user-astronaut, fa-light fa-user-secret, fa-light fa-user-ninja, fa-light fa-users, fa-light fa-handshake, fa-light fa-comments, fa-light fa-bullhorn, fa-light fa-headset, fa-light fa-shield-check, fa-light fa-dragon, fa-light fa-unicorn, fa-light fa-cat, fa-light fa-dog, fa-light fa-rocket, fa-light fa-planet-ringed, fa-light fa-fire-flame-curved, fa-light fa-bolt, fa-light fa-leaf, fa-light fa-gem, fa-light fa-trophy. Any other valid Font Awesome 6 icon name is accepted too — always keep the "fa-light" weight.

list-applications

Lists the current user's applications in the Developer Portal. Returns each application's appId, devId, name, slug, url, description, createdAt timestamp, and a ready-made tag — a chat entity tag of the form @[application:<appId>|<Name>]. To give the user a clickable link that opens an application inside the platform, paste its tag value verbatim into your reply (do NOT link the raw URL).

No parameters.


Events Service (Events)

Calendar service for listing, creating, and editing meetings.

Source: src/Applications/EventsApplication/Services/EventsService.js

list-events

Returns a list of calendar events for the specified date range and optional meeting filter, sorted by start time ascending.

ParameterTypeRequiredDescription
rangestringNoDate range to fetch. Must be one of: day, week, month, year. Defaults to month.
startDatestringNoISO 8601 anchor date (e.g. "2026-04-07"). Defaults to today.
filterstringNoMeeting source filter. Must be one of: all, room, group, user, community. Defaults to all.
idstringNoID of the room, group, user, or community. Used when filter is not all.

create-meeting

Creates a new meeting on the calendar with the specified title, type, time range, and optional participants, description, color, and recurrence.

ParameterTypeRequiredDescription
titlestringYesThe title of the meeting.
typestringYesThe meeting type. Must be one of: room, group, community, direct (private).
startDatestringNoThe meeting start date/time as a UTC ISO 8601 string (e.g. "2026-04-10T14:00:00.000Z"). Always use UTC — convert from local time if needed. Defaults to today's current time rounded up to the next 15-minute mark.
endDatestringNoThe meeting end date/time as a UTC ISO 8601 string (e.g. "2026-04-10T15:00:00.000Z"). Always use UTC — convert from local time if needed. Defaults to 1 hour after startDate.
descriptionstringNoAn optional description for the meeting.
colorstringNoHex color code for the meeting (e.g. "#4299f5"). Defaults to the type's default color when omitted.
participantsstring[]NoArray of user IDs to invite to the meeting. For private meetings with multiple participants, a group is created automatically.
recurringWeeklybooleanNoIf true, the meeting repeats every week at the same time. Not supported for community meetings.
roomIdstringNoThe room ID. Required when type is "room".
groupIdstringNoThe group ID. Required when type is "group".
communityIdstringNoThe community ID. Required when type is "community".
globalEventIdstringNoThe community global event ID. Required when type is "community".

edit-meeting

Updates an existing meeting's fields (title, description, time, participants, or color) by meeting ID.

ParameterTypeRequiredDescription
meetingIdstringYesThe unique identifier of the meeting to update.
titlestringNoNew title for the meeting.
descriptionstringNoNew description for the meeting.
startDatestringNoNew start date/time as a UTC ISO 8601 string (e.g. "2026-04-10T14:00:00.000Z"). Always use UTC — convert from local time if needed.
endDatestringNoNew end date/time as a UTC ISO 8601 string (e.g. "2026-04-10T15:00:00.000Z"). Always use UTC — convert from local time if needed.
colorstringNoNew hex color code for the meeting (e.g. "#4299f5").
participantsstring[]NoUpdated list of invited participant user IDs.

Groups Service (Groups)

Group management service for listing groups the current user belongs to and their participants.

Source: src/Services/Groups/GroupsService.js

list-groups

Returns groups the current user belongs to. Supports search and cursor-based pagination.

ParameterTypeRequiredDescription
querystringNoSearch query to filter groups by name.
limitnumberNoMaximum number of groups to return. Defaults to 20.
cursorstringNoPagination cursor for fetching the next page of results.

list-group-participants

Returns participants of a specific group. Supports search and cursor-based pagination.

ParameterTypeRequiredDescription
groupIdstringYesThe unique identifier of the group.
querystringNoSearch query to filter participants by name.
limitnumberNoMaximum number of participants to return. Defaults to 20.
cursorstringNoPagination cursor for fetching the next page of results.

discover-groups

Returns groups the current user can join via CBAC — groups whose badge policy is satisfied by the badges the user holds. Each result includes the cbacPolicies that grant access. Supports search and cursor-based pagination.

ParameterTypeRequiredDescription
querystringNoSearch query to filter groups by name.
limitnumberNoMaximum number of groups to return. Defaults to 20.
cursorstringNoPagination cursor for fetching the next page of results.

join-group

Joins the current user to a group via CBAC. The user must hold a badge that satisfies a badge policy on the target group (use discover-groups to find eligible groups first).

ParameterTypeRequiredDescription
groupIdstringYesThe unique identifier of the group to join.

HTTP Service (Http)

Generic HTTP utility: reachability ping, GET, and POST against any URL. Requests are sent without user credentials (cookies are stripped); responses include status, headers, and body. Timeouts are capped server-side.

Source: src/Services/Http/HttpService.js

ping

Pings a URL with HEAD and returns whether it is reachable, the response latency in ms, and the HTTP status code (0 for cross-origin or unreachable servers). Returns: { up: boolean, latency: number, status: number, error?: string }.

ParameterTypeRequiredDescription
urlstringYesThe URL to ping.
timeoutnumberNoRequest timeout in milliseconds. Defaults to 10000, max 60000.

get

Performs an HTTP GET against the URL and returns the response. Body is auto-parsed as JSON when the response Content-Type is application/json (or *+json), otherwise as text. Returns: { ok: boolean, status: number, statusText: string, headers: object, body: any, bodyType: "json"|"text", latency: number, error?: string }.

ParameterTypeRequiredDescription
urlstringYesAbsolute URL to GET.
headersobjectNoMap of request headers to send (e.g. { "Accept": "application/json" }).
timeoutnumberNoRequest timeout in milliseconds. Defaults to 30000, max 60000.
responseTypestringNoHow to parse the response body: "auto" (default — JSON if Content-Type matches, else text), "json", or "text".

post

Performs an HTTP POST against the URL with the given body and returns the response (same shape as get). If body is a plain object it is JSON-stringified and Content-Type defaults to application/json; strings are sent verbatim with the supplied or existing Content-Type.

ParameterTypeRequiredDescription
urlstringYesAbsolute URL to POST to.
bodyobjectNoRequest body. Plain object → JSON-stringified; string → sent verbatim. Omit for an empty-body POST.
headersobjectNoMap of request headers to send.
contentTypestringNoOverride the Content-Type header (defaults to application/json when body is an object).
timeoutnumberNoRequest timeout in milliseconds. Defaults to 30000, max 60000.
responseTypestringNoHow to parse the response body: "auto" (default), "json", or "text".

Logging Service (Logging)

Exposes the in-memory console log buffer captured by ConsoleLogCapture for diagnostics and bug reporting.

Source: src/Services/Logging/LoggingService.js

get-logs

Returns the captured console log buffer (log, info, warn, error) since app start. Choose the format: "text" returns { format: "text", text: <string> } with one line per entry; "file" returns { format: "file", filename, mimeType, size, file: File } — the File is for direct callers (upload/download) and is omitted in the AI/MCP serialized response, which still includes filename, mimeType, and size.

ParameterTypeRequiredDescription
formatstringNoOutput format. Must be one of: "text", "file". Defaults to "text".

Networks Service (Networks)

Network management service for retrieving information about the current network.

Source: src/Applications/NetworksApplication/Services/NetworksService.js

get-current-network

Returns the id and name of the network the user is currently in. Call this to get the current networkId before making any room or network-related calls.

No parameters.


Profile Service (Profile)

Read-only access to a user's public profile artifacts — Verus verifiable credentials and network badges — addressed by userId. No UI side effects.

Source: src/Services/Profile/ProfileService.js

get-user-credentials

Returns the Verus verifiable credentials published on a user's profile, by their userId. These are the attestation claims of type "credential" shown in the profile Credentials view. Revoked credentials are returned only when the userId is the current user. Visibility is enforced by the backend against the current user.

ParameterTypeRequiredDescription
userIdstringYesThe unique identifier of the user whose credentials to list.
statusstringNoOptional claim status filter (e.g. "Verified And Persisted"). Omit to return credentials of all statuses the caller may see.

get-user-badges

Returns the badges assigned to a user by their userId. Each badge includes badgeId, badgeName, badgeDescription, thumbnailId, and networkId. Visibility is enforced by the backend against the current user.

ParameterTypeRequiredDescription
userIdstringYesThe unique identifier of the user whose badges to list.
networkIdstringNoNetwork scope for the badges. Defaults to "all", which fetches badges from every network shared with the target user.

Resource Service (Resources)

Low-level resource service for generating URLs (thumbnails, public links, direct downloads) for resources.

Source: src/Services/Resources/ResourceService.js

get-thumbnail-url

Returns a thumbnail URL for a resource at the specified size.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource.
thumbnailSizenumberNoThe desired thumbnail size in pixels. Defaults to 256.

generate-public-url

Generates a public preview URL for a resource.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource.

generate-best-view-url

Generates an optimized view URL for a resource.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource.

generate-direct-public-url

Generates a direct public API URL for downloading a resource.

ParameterTypeRequiredDescription
resourceIdstringYesThe unique identifier of the resource.

list-bot-avatars

Returns the network-allowed bot avatar collection (id, name, tags) from the shared bot-avatars directory. Avatars carrying the current network's denied tags (same modesty/policy filter as the user avatar picker) are excluded. Use a returned id as a 3D avatar resource id (e.g. an agent's avatarResourceId).

ParameterTypeRequiredDescription
limitnumberNoMax avatars to return. Defaults to 50.

Rooms Service (Rooms)

Room management service for searching rooms, browsing room templates, creating rooms from templates, retrieving room details, managing prop content, and checking permissions.

Source: src/Applications/RoomsApplication/Services/RoomsService.js

search-rooms

Searches all public/discoverable rooms in the current network using the explorer service. Returns rooms anyone can find and join, regardless of membership. Use this when the user wants to discover or browse rooms.

ParameterTypeRequiredDescription
querystringNoSearch query to filter rooms by name.
offsetnumberNoPagination offset. Defaults to 0.
sizenumberNoNumber of results to return. Defaults to 10.

search-my-rooms

Searches rooms belonging to the current user within the current network — their joined rooms, favorites, or pending invitations. Use this when the user asks about their own rooms.

ParameterTypeRequiredDescription
filterstringYesRoom filter. Must be one of: "all" — all rooms the current user belongs to; "favourite" — user's favorite rooms only; "invites" — rooms the user has been invited to but not yet joined.
querystringNoSearch query to filter rooms by name.
offsetnumberNoPagination offset. Defaults to 0.
sizenumberNoNumber of results to return. Defaults to 10.

get-room

Retrieves basic room model data by room ID including name, description, settings, and metadata.

ParameterTypeRequiredDescription
roomIdstringYesThe unique room identifier.
networkIdstringNoNetwork ID the room belongs to.

get-permissions

Retrieves the current user permissions for a room (view, comment, contribute, edit, manage).

ParameterTypeRequiredDescription
roomIdstringYesThe unique room identifier.

get-room-props

Lists all props (interactive objects) in a room. Returns prop objects with id, name (author-set display name), assetTitle (the asset's catalog name, e.g. "Gold Picture Frame" or "Presentation Board" — tells you what kind of object the prop is even when the author renamed it), type (array of content types the prop can hold — empty means it cannot hold content), thumbnailCount (number of visual display canvases — a picture frame has thumbnailCount > 0), isPresentationBoard (true = a live screen-share board, NEVER a target for pasted content; null = unknown), invokeType (Default/Container/Bookshelf/FileCabinet), tags, contentCount, and assetId. Match the user's words against tags, name and assetTitle to find the prop they mean (e.g. "logo", "team", "the gold frame").

ParameterTypeRequiredDescription
roomIdstringYesThe unique room identifier.
networkIdstringNoNetwork ID the room belongs to.

get-prop

Returns details for a single prop by ID (name, assetTitle, type, thumbnailCount, isPresentationBoard, contentCount, assetId — same fields as get-room-props) with no navigation or UI side effects. Use this to read prop data. Only use preview-prop when the user explicitly asks to show, open, or navigate to a prop.

ParameterTypeRequiredDescription
propIdstringYesThe unique prop identifier.
roomIdstringYesThe room the prop belongs to.
networkIdstringNoNetwork ID the room belongs to.

list-prop-team-members

Lists all team member invitations for a prop in a room. Returns an array of invitation records, each containing the invited user's ID, their permissions (view/comment/contribute/edit/manage), and any stored custom metadata. Agent assignments are stored id-only as customParams.agentInfo.id (string). Older rows may still carry the full snapshot customParams.agentInfo: { id, name, description, avatarUrl } — only id is read; everything else is resolved from the live agent.

ParameterTypeRequiredDescription
roomIdstringYesThe room the prop belongs to.
propIdstringYesThe prop whose team members to list.

invite-to-prop

Adds a user to a prop's team, or updates an existing team member's permissions and metadata. When called for a user already in the team this acts as an update — the invitation is replaced with the new permissions and customParams. Use list-prop-team-members first to check current membership before inviting.

ParameterTypeRequiredDescription
roomIdstringYesThe room the prop belongs to.
propIdstringYesThe prop to invite the user to.
invitedUserstringYesUser ID of the person to invite or update.
permissionsobjectNoPermission flags for the team member: { view: boolean, comment: boolean, contribute: boolean, edit: boolean, manage: boolean }. Defaults to view-only (view: true, all others false) when omitted.
customParamsobjectNoArbitrary metadata stored on the invitation. To assign an AI agent to this team member, pass customParams: { agentInfo: { id: "<agent-id>", avatarResourceId: "<picked-3d-avatar-resource-id>" | null } } (id-only — do NOT include name/description/avatarUrl, those are resolved from the live agent). avatarResourceId is the team member's picked 3D avatar for this prop, or null when nothing has been picked — readers fall back to the user's own 3D profile avatar in that case. Pass customParams: null to clear a previously assigned agent. The full-snapshot shape agentInfo: { id, name, description, avatarUrl } is still read for backwards compatibility but only id is used.

delete-prop-invitation

Removes a user from a prop's team by deleting their invitation. Use list-prop-team-members first to confirm the user is currently a team member.

ParameterTypeRequiredDescription
roomIdstringYesThe room the prop belongs to.
propIdstringYesThe prop to remove the user from.
invitedUserstringYesUser ID of the team member to remove.

list-room-templates

Lists room templates available for creating new 3D rooms. Each template has an id, name, tags (e.g. "office", "gallery", "community"), price in cents (0 or missing = free), and subscriptionStatus. Supports text search and server-side tag filtering with pagination. Use this before create-room-from-template to find a template id.

ParameterTypeRequiredDescription
querystringNoSearch query to filter templates by name.
tagsstring[]NoFilter templates by tags (server-side), e.g. ["community"].
offsetnumberNoPagination offset. Defaults to 0.
sizenumberNoNumber of results to return. Defaults to 20.

create-room-from-template

Creates a new 3D room in the current network from a room template and returns the new roomId. Only free templates can be created this way — paid templates require checkout in the Rooms app UI. Use list-room-templates first to find a template id and check it is free.

ParameterTypeRequiredDescription
templateIdstringYesThe room template id (from list-room-templates).
roomNamestringYesName for the new room.

paste-resources-into-prop

Places one or more existing CMS resources into a prop in a room. Resources are link-copied (the originals stay in their current folder) and added to the prop's content list. Template placeholder resources still sitting on the prop (from the room template) are removed first so they never mix with the user's content (removedTemplateStubs in the result lists them; set removeTemplateStubs=false to keep them). When the paste leaves more than one resource on a non-container prop, the tool automatically enables the prop's auto content slider so the items cycle as a slideshow (result field sliderEnabled reports it; sliderError appears if the paste succeeded but the slider toggle failed). When several similar props are available (e.g. a row of picture frames), SPREAD the content across them — one call per prop with a contiguous, order-preserving share each — rather than stacking everything on a single prop, unless the user explicitly asked for one slideshow. The prop must support content — check via get-room-props that its type array is non-empty and isPresentationBoard is false: presentation (screen-share) boards are rejected, they are reserved for live screen sharing. Prefer props with thumbnailCount > 0 (picture frames / display canvases). Use service__CMS__resource_search to find resource ids first.

ParameterTypeRequiredDescription
roomIdstringYesThe room the prop belongs to.
propIdstringYesThe prop to place the resources into.
resourceIdsstring[]YesCMS resource ids to place into the prop, in display order.
appendToListEndbooleanNoWhen true (default) new resources are appended to the end of the prop's content list; when false they are inserted at the front.
removeTemplateStubsbooleanNoWhen true (default) placeholder resources the prop inherited from the room template are removed before pasting. Pass false only when the user explicitly wants to keep the template content.
networkIdstringNoNetwork ID the room belongs to. Defaults to the current network.

Text Chat Service (TextChat)

Headless text-chat I/O for non-UI callers (agents, sub-agents, scripts). Read channel history and send messages without opening the TextChat application or changing the active channel. Encryption and decryption are handled automatically.

Source: src/Services/TextChat/TextChatService.js

get-channel-history

Fetches the most recent messages for a text-chat channel by channelId, decrypted and ready to read. Returns a plain list of messages with authorId, body, timestamp, and messageType. Does not open any UI or change the active channel.

ParameterTypeRequiredDescription
channelIdstringYesThe text-chat channel ID to load messages from.
limitnumberNoMaximum number of messages to return. Defaults to 20.
beforeMessageIdstringNoLoad messages older than this messageId (for paginating backwards).
afterMessageIdstringNoLoad messages newer than this messageId (for paginating forwards).

send-message

Sends a text message to a text-chat channel. You must provide EITHER a channelId (preferred when you already have one) OR a userId (for a direct message — the service resolves the direct channel automatically). Silent — does NOT open the TextChat application, does NOT change the active channel, does NOT affect any UI. Encryption is handled automatically if the channel is encrypted.

ParameterTypeRequiredDescription
textstringYesThe message body to send.
channelIdstringNoTarget channel ID. Use this when you already know the channel (e.g. from a platform event). Takes precedence over userId.
userIdstringNoTarget user ID for a direct message. The service resolves the direct channel by calling channel:getDirectChannel under the hood. Ignored if channelId is also provided.
buttonsobject[]NoOptional interactive buttons rendered below the message body. Pass a real JSON array (NOT a JSON-stringified array). Each entry MUST be an object with this exact NESTED shape: {text: string, intent: {applicationId: string, action: string, params?: object}}. Do NOT flatten applicationId/action onto the button itself — intent is a sub-object. text is the visible label. Clicking dispatches intent via Application.run on the recipient's client (use an applicationId + action the recipient's app exposes — see other service manifests for valid pairs). Entries that are malformed are repaired-or-dropped by the service and reported back in buttonWarnings; check that field on the response and use the canonical shape going forward. Example: [{"text":"Open profile","intent":{"applicationId":"valuguru","action":"open-agent","params":{"agentId":"agent_xxx"}}}].
customParamsobjectNoOptional message customParams. Only the key open-thread is accepted (any other key is dropped by the service). Pass {"open-thread": true} ONLY when the recipient explicitly expects your outreach (e.g. you are responding to their team-member avatar click) — it force-opens the chat thread on their screen, which is invasive.

message-owner

Delivers a message authored by the AI agent itself (NOT by the logged-in user) into a user's dedicated agent-to-user channel, resolved from source userAIAgent:{userId}:{agentId}. The recipient sees the agent as the author and the channel is created on first use. This is the INVASIVE owner-notification channel: use it to ping/notify the owner (pass the owner's userId) — or, occasionally, any other user. Unlike send-message (which sends as the logged-in user), this is authored by the agent. Silent toward the UI — does NOT open the TextChat application or change the active channel.

ParameterTypeRequiredDescription
userIdstringYesRecipient user ID. The user who will receive the message in their agent channel.
agentIdstringYesThe calling agent's own ID. Used to address the dedicated userAIAgent:{userId}:{agentId} channel so the message is authored by this agent.
textstringYesThe message body to send.
buttonsobject[]NoOptional interactive buttons rendered below the message body. Pass a real JSON array (NOT a JSON-stringified array). Each entry MUST be an object with this exact NESTED shape: {text: string, intent: {applicationId: string, action: string, params?: object}}. Do NOT flatten applicationId/action onto the button itself — intent is a sub-object. text is the visible label. Clicking dispatches intent via Application.run on the recipient's client (use an applicationId + action the recipient's app exposes — see other service manifests for valid pairs). Entries that are malformed are repaired-or-dropped by the service and reported back in buttonWarnings; check that field on the response and use the canonical shape going forward. Example: [{"text":"Open profile","intent":{"applicationId":"valuguru","action":"open-agent","params":{"agentId":"agent_xxx"}}}].
customParamsobjectNoOptional message customParams. Only the key open-thread is accepted (any other key is dropped by the service). Pass {"open-thread": true} ONLY when the recipient explicitly expects your outreach (e.g. you are responding to their team-member avatar click) — it force-opens the chat thread on their screen, which is invasive.

Time Service (Time)

Returns the current user's local clock context — local ISO with offset, UTC ISO for the same instant, IANA timezone, offset in minutes, day-of-week, and resolved locale. Use this before any "today"/"tomorrow"/"now" reasoning or when converting natural-language times to ISO strings.

Source: src/Services/Time/TimeService.js

get-local-time

Returns an object describing the user's current local time: { iso: local ISO 8601 with offset (e.g. "2026-05-28T13:45:30.000+02:00"), utcIso: same instant in UTC (e.g. "2026-05-28T11:45:30.000Z"), timezone: IANA name (e.g. "Europe/Berlin"), offsetMinutes: integer minutes ahead of UTC (e.g. 120), dayOfWeek: long English day name (e.g. "Thursday"), localDate: "YYYY-MM-DD" in local time, localTime: "HH:MM" in local time, locale: resolved BCP 47 locale (e.g. "en-US") }. Takes no parameters.

No parameters.


Users Service (Users)

User management service for getting current user info, looking up users by ID, searching contacts/followers/following, and managing connection requests.

Source: src/Services/Users/UsersService.js

current

Returns the currently authenticated user info (id, firstName, lastName, etc.).

No parameters.

get

Retrieves a user by their unique ID. Returns user object with id, firstName, lastName, etc.

ParameterTypeRequiredDescription
userIdstringYesThe unique user identifier.

search-users

Search for users within existing connections (contacts, followers, or following). Use this to find a user ID when you only know their name and they are already in your network. To discover new users outside your network, use find-user instead.

ParameterTypeRequiredDescription
filterstringYesUser filter. Must be one of: "contacts" — current user's friends/connections; "followers" — users who follow the current user; "following" — users the current user follows.
querystringNoSearch query to filter users by name.
offsetnumberNoPagination offset. Defaults to 0.
sizenumberNoNumber of results to return. Defaults to 10.

find-user

Discover new users to connect with by searching by name. Uses a suggestion engine — distinct from search-users which searches within existing connections.

ParameterTypeRequiredDescription
querystringNoSearch query to filter users by name.
offsetnumberNoPagination offset. Defaults to 0.
sizenumberNoNumber of results to return. Defaults to 10.

send-connection-request

Sends a connection request to a user by their ID.

ParameterTypeRequiredDescription
userIdstringYesThe unique identifier of the user to send a connection request to.

accept-connection-request

Accepts a pending connection request from a user.

ParameterTypeRequiredDescription
userIdstringYesThe unique identifier of the user whose connection request to accept.

decline-connection-request

Declines a pending connection request from a user.

ParameterTypeRequiredDescription
userIdstringYesThe unique identifier of the user whose connection request to decline.

cancel-connection-request

Cancels a pending connection request that the current user previously sent.

ParameterTypeRequiredDescription
userIdstringYesThe unique identifier of the user to whom the connection request was sent.

Valu Guru Service (AiGuru)

System service for managing applications via AI. Provides tools to open, close, list, and check application status.

Source: src/Services/AiGuru/AiGuruService.js

open

Opens (loads) an application by its ID into the dock.

ParameterTypeRequiredDescription
applicationIdstringYesThe unique identifier of the application to open.

close

Closes (unloads) an application by its ID from the dock.

ParameterTypeRequiredDescription
applicationIdstringYesThe unique identifier of the application to close.

has-application

Checks whether an application with the given ID exists in the registry.

ParameterTypeRequiredDescription
applicationIdstringYesThe unique identifier of the application to check.

get-applications

Returns a list of all registered applications with their id, slug, icon, and title.

No parameters.

is-application-loaded

Checks whether an application with the given ID is currently loaded (open) in the dock.

ParameterTypeRequiredDescription
applicationIdstringYesThe unique identifier of the application to check.

get-chat-history

Returns the in-memory message history for a chat session. Omit chatId to get the currently active session.

ParameterTypeRequiredDescription
chatIdstringNoID of the chat session. Omit to use the currently active session.

get-agent-history

Returns the in-memory message history for a background agent.

ParameterTypeRequiredDescription
agentIdstringYesID of the background agent whose message history to retrieve.

query-knowledge-base

Queries the RAG knowledge base directly over the Valu Guru server's socket connection, bypassing chat entirely. Returns the raw tool result text.

ParameterTypeRequiredDescription
querystringYesThe search query text.
toolNamestringNoName of the RAG tool to call. Only needed if the RAG server exposes more than one tool — omit to auto-pick the sole registered tool.
argsobjectNoExtra arguments merged into the RAG tool call alongside query (tool-specific, e.g. scope filters).

Verus Wallet Service (VerusWallet)

Executes on-chain transfers from an AI agent's attached Verus wallet identity. Every call takes an agentId — the client resolves which wallet is attached to that agent. Returns an error if the agent has no wallet attached or the wallet has not finished being provisioned on-chain.

Source: src/Services/AiGuru/VerusWalletService.js

transfer

Send currency from the agent's attached Verus wallet to a destination address or identity. Call this when the user or agent needs to move funds out of an agent wallet. Fails if the agent has no wallet attached, or if the wallet is still pending creation.

ParameterTypeRequiredDescription
agentIdstringYesID of the AI agent performing the transfer. The service looks up which wallet identity is attached to this agent — NEVER pass a wallet ID or i-address here.
destinationstringYesRecipient address, i-address, or Verus identity (e.g. "alice@").
amountnumberYesAmount to send (positive number). Interpreted in the selected currency — defaults to VRSC when currency is omitted.
currencystringNoCurrency ticker or identity (e.g. "VRSC", "VRSC-BTC"). Defaults to the native chain currency.
memostringNoOptional memo attached to the transaction.

get-balance

Return the last-known balance of the wallet attached to the specified agent. Reads from the client cache — call verus:getAgentsBalance (via AiGuruStore.refreshAgentBalances) for a fresh value.

ParameterTypeRequiredDescription
agentIdstringYesID of the AI agent whose wallet balance should be returned.