WAKATODOCS

Account Tools

Account MCP tools for wka_live_ keys — spaces, members, funds, domains, email, phone, models, keys.

Tools callable over account-mcp with a wka_live_* account key. Account keys default to read-only; every grant is explicit and spend-capped.

The Account Agent can also reach in-space tools via space_-prefixed passthrough (each space_<tool> maps to <tool> in the Space Tools tabs), containment-checked against its allowed spaces.

AI

get_my_model

Scope: ai:run

Read YOUR OWN current brain model and the list of models your owner allows you to switch to (with pricing and context windows). Only works for the Account Agent's own key.

set_my_model

Scope: ai:run

Switch YOUR OWN brain model. Pick the best tool for the job — e.g. a stronger model for hard reasoning, a cheaper/faster one for routine work — from the allowed list in get_my_model. Takes effect on your very next model call (no restart). Tell your owner when you switch and why.

ParameterTypeRequiredDescription
modelstringyesvendor/model_key from get_my_model, e.g. anthropic/claude-sonnet-4.6
reasonstringOne line on why you're switching — shown to your owner in the Brain panel.

Billing

get_commerce_status

Scope: billing:read

Check whether the account is set up to take payments, in plain terms — read this BEFORE telling the owner how to 'set up' or 'connect' payments. Returns stage (not_set_up | pending | ready), a summary to relay, a next_step (null when ready), and the spaces payments are live on. If it's already ready, there is nothing to set up. Never describe payment setup from memory, and never name the underlying payment provider — Wakato white-labels it; say 'payments' / 'get paid' / 'verify your business'.

get_usage_summary

Scope: billing:read

Recent account wallet transactions plus this key's rolling 30-day spend vs its limit.

ParameterTypeRequiredDescription
limitnumberMax transactions (default 50, cap 200)

Domains & DNS

add_dns_record

Scope: domains:write

Add a DNS record to a Wakato-purchased domain. REQUIRES OWNER APPROVAL: first call queues it; after approval, call again with approved_action_id.

ParameterTypeRequiredDescription
domain_idstring
record_typeA | AAAA | ANAME | CNAME | MX | TXT | NS | SRV
namestringRecord host/name, e.g. 'www' or '@'
contentstringRecord value
ttlnumberTTL seconds (default 3600)
prioritynumberMX/SRV priority
approved_action_idstringOwner-approved pending action id (second call)

assign_domain_to_space

Scope: domains:write

Assign one of the account's domains to a space (reversible; no DNS change).

ParameterTypeRequiredDescription
domain_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

delete_dns_record

Scope: domains:write

Delete a non-system DNS record from a Wakato-purchased domain. REQUIRES OWNER APPROVAL (same two-call flow as add_dns_record).

ParameterTypeRequiredDescription
domain_idstring
record_idstring
approved_action_idstring

list_dns_records

Scope: domains:read

List a domain's DNS records (domains purchased through Wakato).

ParameterTypeRequiredDescription
domain_idstringyesDomain id from list_domains

list_domains

Scope: domains:read

List the account's domains with verification/SSL status, expiry, auto-renew, space assignments, and email (Agent Mail) status.

purchase_domain

Scope: domains:write

Buy a domain (1 year, auto-renews yearly against the account wallet). REQUIRES OWNER APPROVAL: the first call prices it and queues the purchase; after the owner approves, call again with approved_action_id to execute. Counts against this key's spend limit. The domain arrives pointed at Wakato and email-ready. Optionally assigns it to a space.

ParameterTypeRequiredDescription
domainstringFull domain from search_domains, e.g. example.com
space_idstringSpace to assign it to (optional)
approved_action_idstringId of an owner-approved pending action to execute (second call)

search_domains

Scope: domains:read

Check domain availability and pricing. Pass a full domain (example.com) or a bare name to check common TLDs.

ParameterTypeRequiredDescription
querystringyesDomain or name to check

toggle_domain_auto_renew

Scope: domains:write

Turn yearly auto-renew on or off for a domain purchased through Wakato.

ParameterTypeRequiredDescription
domain_idstringyesDomain id from list_domains
auto_renewbooleanyes

unassign_domain_from_space

Scope: domains:write

Remove a domain's assignment to a space.

ParameterTypeRequiredDescription
domain_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

update_dns_record

Scope: domains:write

Update a non-system DNS record on a Wakato-purchased domain. REQUIRES OWNER APPROVAL (same two-call flow as add_dns_record).

ParameterTypeRequiredDescription
domain_idstring
record_idstringRecord id from list_dns_records
namestring
contentstring
ttlnumber
prioritynumber
approved_action_idstring

Funds & Budget

allocate_space_funds

Scope: funds:write

ADD budget to a space from the account wallet (top-up, never a replacement). Counts against this key's rolling 30-day spend limit. Check get_space_allocation first — don't allocate to a space that already has budget.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
amountnumberyesUSD amount to ADD to the space budget

get_space_allocation

Scope: funds:read

Read one space's budget allocation (allocated / spent / remaining).

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)

get_wallet

Scope: funds:read

Read the account wallet: total balance, unallocated amount, and per-space budget allocations.

reclaim_space_funds

Scope: funds:write

Reclaim unspent budget from a space back to the account wallet (does not count against the spend limit).

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
amountnumberyesUSD amount to reclaim

Gateway Models

disable_space_model

Scope: models:write

Remove a model from a space's gateway.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
model_keystringyesModel key from list_space_models

enable_space_model

Scope: models:write

Enable a model on a space's gateway so agents and apps in that space can use it.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
model_keystringyesModel key from list_available_models

list_available_models

Scope: models:read

List the platform model catalog (model_key, vendor, category, capabilities).

ParameterTypeRequiredDescription
categorystringFilter by category, e.g. llm, image, tts

list_space_models

Scope: models:read

List the models enabled on a space's gateway.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)

Hubs

add_hub_discussion_reply

Scope: hubs:write

Post a reply on a discussion thread (blocked if locked).

ParameterTypeRequiredDescription
hub_idstringyes
discussion_idstringyes
contentstringyes

add_hub_moderator

Scope: hubs:write

Promote a user to hub moderator. permissions is an object of booleans: approve_members, approve_products, edit_hub.

ParameterTypeRequiredDescription
hub_idstringyes
user_idstringyes
permissionsobject

add_hub_tab

Scope: hubs:write

Add a content tab to a hub the account owns. module is a slug from list_hub_catalog (about, members, products, feed, events, discussions, resources, rooms, custom_page). config holds module-specific settings, e.g. custom_page → { paper_id }.

ParameterTypeRequiredDescription
hub_idstringyes
modulestringyes
namestring
iconstring
configobject
sort_ordernumber
is_visibleboolean

approve_hub_member

Scope: hubs:write

Approve a pending join request. member_id from list_hub_members (status='pending').

ParameterTypeRequiredDescription
hub_idstringyes
member_idstringyes

assign_hub_to_space

Scope: hubs:write

Operate one of the account's hubs from a space (strict 1:1 — a hub runs from one space, a space runs one hub). The space's members and agent can then fully manage the hub.

ParameterTypeRequiredDescription
hub_idstringyes
space_idstringyes

create_hub

Scope: hubs:write

Create a community hub OWNED by this account. REQUIRES OWNER APPROVAL: the first call queues it; after the owner approves, call again with approved_action_id to execute. Optionally pass space_id to also operate the hub from that space (its members/agent then manage it). publish:true goes live immediately; otherwise it's a draft.

ParameterTypeRequiredDescription
namestringyes
descriptionstring
short_descriptionstring
categorycommerce | services | jobs | dating | community | other
visibilitypublic | private
publishbooleanGo live now (true) or save as draft (false, default).
space_idstringSpace to operate the hub from (optional).
approved_action_idstringId of an owner-approved pending action to execute (second call).

create_hub_course

Scope: hubs:write

Create a classroom course in an owned hub (auto-creates a Classroom tab if missing). Add lessons with create_hub_lesson.

ParameterTypeRequiredDescription
hub_idstringyes
titlestringyes
descriptionstring
cover_urlstring
sort_ordernumber

create_hub_discussion

Scope: hubs:write

Start a discussion thread in a hub the account owns (auto-creates a Discussions tab). Optionally pin/lock or set category_id.

ParameterTypeRequiredDescription
hub_idstringyes
titlestringyes
bodystring
category_idstring
is_pinnedboolean
is_lockedboolean

create_hub_discussion_category

Scope: hubs:write

Create a discussion category (auto-creates a Discussions tab if missing).

ParameterTypeRequiredDescription
hub_idstringyes
namestringyes
descriptionstring
sort_ordernumber

create_hub_event

Scope: hubs:write

Schedule an event in an owned hub (auto-creates an Events tab if missing). starts_at is an ISO timestamp; location_type online|in_person.

ParameterTypeRequiredDescription
hub_idstringyes
titlestringyes
descriptionstring
location_typeonline | in_person
locationstring
starts_atstringyes
ends_atstring
cover_urlstring

create_hub_lesson

Scope: hubs:write

Add a lesson to a classroom course. content is rich text; video_url optional; attachments is an array of {url, name, type}.

ParameterTypeRequiredDescription
hub_idstringyes
course_idstringyes
titlestringyes
contentstring
video_urlstring
attachmentsobject[]
sort_ordernumber

create_hub_resource

Scope: hubs:write

Add a resource to the hub library (auto-creates a Resources tab if missing). Provide a url OR a file_url. Optional category groups items.

ParameterTypeRequiredDescription
hub_idstringyes
titlestringyes
categorystring
descriptionstring
urlstring
file_urlstring
file_namestring
iconstringOptional icon: a Lucide icon name (e.g. 'BookOpen') or an image URL.

create_hub_role

Scope: hubs:write

Create a membership role for a hub the account owns (e.g. Member, Seller, VIP). auto_approve grants it without review; is_public shows it on the join page. Attach abilities with set_hub_role_permissions, join gating with set_hub_role_requirements.

ParameterTypeRequiredDescription
hub_idstringyes
namestringyes
descriptionstring
iconstring
colorstring
auto_approveboolean
is_publicboolean
sort_ordernumber

create_hub_room

Scope: hubs:write

Create a room in a hub the account owns. mode audio|video. schedule.mode: always (persistent) | once (set scheduled_start/end) | daily/weekly/monthly (recurring). Access: allowed_roles[]/allowed_members[] (empty = all members); require_approval = waiting room.

ParameterTypeRequiredDescription
hub_idstringyes
titlestringyes
descriptionstring
modeaudio | video
scheduleobject
scheduled_startstring
scheduled_endstring
require_approvalboolean
track_attendanceboolean
record_sessionsboolean
allowed_rolesstring[]
allowed_membersstring[]

delete_hub_course

Scope: hubs:write

Delete a classroom course and all its lessons. course_id from list_hub_courses.

ParameterTypeRequiredDescription
hub_idstringyes
course_idstringyes

delete_hub_discussion

Scope: hubs:write

Delete a discussion thread and its replies.

ParameterTypeRequiredDescription
hub_idstringyes
discussion_idstringyes

delete_hub_discussion_category

Scope: hubs:write

Delete a discussion category (threads kept, uncategorized).

ParameterTypeRequiredDescription
hub_idstringyes
category_idstringyes

delete_hub_discussion_reply

Scope: hubs:write

Delete a reply from a discussion thread (moderation). reply_id from list_hub_discussion_replies.

ParameterTypeRequiredDescription
hub_idstringyes
reply_idstringyes

delete_hub_event

Scope: hubs:write

Delete a hub event. event_id from list_hub_events.

ParameterTypeRequiredDescription
hub_idstringyes
event_idstringyes

delete_hub_lesson

Scope: hubs:write

Delete a classroom lesson. lesson_id from list_hub_lessons.

ParameterTypeRequiredDescription
hub_idstringyes
lesson_idstringyes

delete_hub_resource

Scope: hubs:write

Remove a resource from the hub library. resource_id from list_hub_resources.

ParameterTypeRequiredDescription
hub_idstringyes
resource_idstringyes

delete_hub_role

Scope: hubs:write

Delete a hub role. Fails if members still hold it — reassign them first with set_hub_member_role.

ParameterTypeRequiredDescription
hub_idstringyes
role_idstringyes

delete_hub_room

Scope: hubs:write

Delete a hub video/voice room. room_id from list_hub_rooms.

ParameterTypeRequiredDescription
hub_idstringyes
room_idstringyes

get_hub

Scope: hubs:read

Get an owned hub's overview: profile, status, member counts (approved/pending/suspended), moderator count, public URL.

ParameterTypeRequiredDescription
hub_idstringyes

get_hub_attendance

Scope: hubs:read

Room attendance overview for an owned hub (mirrors the owner Attendance dashboard): totals, per-member and per-room minutes/sessions. Only tracked rooms count.

ParameterTypeRequiredDescription
hub_idstringyes

get_hub_classroom_progress

Scope: hubs:read

Classroom completion stats: per-course lesson_count, learners, completed, in_progress. Optional course_id narrows to one course.

ParameterTypeRequiredDescription
hub_idstringyes
course_idstring

get_hub_membership_plan

Scope: hubs:read

Get the hub's active paid membership plan, or free:true if the hub is free.

ParameterTypeRequiredDescription
hub_idstringyes

get_hub_role

Scope: hubs:read

Get one hub role in full: its fields, assigned permission tags, and join requirements. role_id from list_hub_roles.

ParameterTypeRequiredDescription
hub_idstringyes
role_idstringyes

get_hub_stats

Scope: hubs:read

One-call overview of an owned hub: member counts, moderators, tabs, roles, and content counts (discussions, events, resources, classroom courses/lessons, rooms) plus paid-membership snapshot.

ParameterTypeRequiredDescription
hub_idstringyes

list_hub_catalog

Scope: hubs:read

Discover the building blocks for hub structure: tab_modules (about, members, products, feed, events, discussions, resources, rooms, custom_page…), permission_tags (role abilities), and role_requirement_types (join rules). Call first so add_hub_tab / set_hub_role_permissions / set_hub_role_requirements use valid slugs.

list_hub_courses

Scope: hubs:read

List an owned hub's classroom courses with lesson_count each.

ParameterTypeRequiredDescription
hub_idstringyes

list_hub_discussion_categories

Scope: hubs:read

List a hub's discussion categories.

ParameterTypeRequiredDescription
hub_idstringyes

list_hub_discussion_replies

Scope: hubs:read

List replies on a discussion thread (oldest first).

ParameterTypeRequiredDescription
hub_idstringyes
discussion_idstringyes
limitnumber

list_hub_discussions

Scope: hubs:read

List a hub's discussion threads (pinned first). Optionally filter by category_id.

ParameterTypeRequiredDescription
hub_idstringyes
category_idstring
limitnumber

list_hub_event_rsvps

Scope: hubs:read

List RSVPs for a hub event plus its going_count. event_id from list_hub_events (space-side).

ParameterTypeRequiredDescription
hub_idstringyes
event_idstringyes
statusgoing | maybe | not_going
limitnumber

list_hub_events

Scope: hubs:read

List an owned hub's events (upcoming:true filters to future events).

ParameterTypeRequiredDescription
hub_idstringyes
upcomingboolean
limitnumber

list_hub_lessons

Scope: hubs:read

List lessons in a classroom course (title, content, video_url, attachments, sort_order).

ParameterTypeRequiredDescription
hub_idstringyes
course_idstringyes

list_hub_members

Scope: hubs:read

List a hub's members with profile info. Filter by status (pending|approved|rejected|suspended|left).

ParameterTypeRequiredDescription
hub_idstringyes
statuspending | approved | rejected | suspended | left
limitnumber
offsetnumber

list_hub_moderators

Scope: hubs:read

List a hub's moderators and their permissions (approve_members, approve_products, edit_hub).

ParameterTypeRequiredDescription
hub_idstringyes

list_hub_resources

Scope: hubs:read

List an owned hub's resource-library items (links/files grouped by category).

ParameterTypeRequiredDescription
hub_idstringyes
limitnumber

list_hub_roles

Scope: hubs:read

List a hub's membership roles (id, slug, name, auto_approve, is_public).

ParameterTypeRequiredDescription
hub_idstringyes

list_hub_rooms

Scope: hubs:read

List a hub's video/voice rooms with status and settings.

ParameterTypeRequiredDescription
hub_idstringyes

list_hub_tabs

Scope: hubs:read

List a hub's content tabs in display order (id, slug, name, module, config, sort_order, is_visible).

ParameterTypeRequiredDescription
hub_idstringyes

list_hubs

Scope: hubs:read

List the account's community hubs and which space (if any) operates each one.

reject_hub_member

Scope: hubs:write

Reject a pending join request (optional reason). member_id from list_hub_members.

ParameterTypeRequiredDescription
hub_idstringyes
member_idstringyes
reasonstring

remove_hub_member

Scope: hubs:write

Permanently remove a member from the hub. member_id from list_hub_members.

ParameterTypeRequiredDescription
hub_idstringyes
member_idstringyes

remove_hub_membership_plan

Scope: hubs:write

Archive the active paid plan and make the hub free.

ParameterTypeRequiredDescription
hub_idstringyes

remove_hub_moderator

Scope: hubs:write

Demote a moderator. moderator_id from list_hub_moderators.

ParameterTypeRequiredDescription
hub_idstringyes
moderator_idstringyes

remove_hub_tab

Scope: hubs:write

Remove a hub tab (also removes content living on it, e.g. that tab's events/resources). tab_id from list_hub_tabs.

ParameterTypeRequiredDescription
hub_idstringyes
tab_idstringyes

reorder_hub_tabs

Scope: hubs:write

Set a hub's tab display order. tab_ids is the full ordered array of tab ids from list_hub_tabs.

ParameterTypeRequiredDescription
hub_idstringyes
tab_idsstring[]yes

set_hub_member_role

Scope: hubs:write

Assign a hub member to a role (omit role_id to clear). member_id from list_hub_members, role_id from list_hub_roles.

ParameterTypeRequiredDescription
hub_idstringyes
member_idstringyes
role_idstringRole id from list_hub_roles; omit or null to clear.

set_hub_membership_plan

Scope: hubs:write

Set/replace the hub's paid membership plan. billing one_time|subscription; price_cents ≥ 100; subscription needs billing_interval month|year. Archives any current plan.

ParameterTypeRequiredDescription
hub_idstringyes
billingone_time | subscriptionyes
price_centsnumberyes
currencystring
billing_intervalmonth | year
lapse_behaviorremove | downgrade

set_hub_role_permissions

Scope: hubs:write

Replace a role's abilities. permissions is the full array of permission-tag slugs from list_hub_catalog. Empty array clears them all.

ParameterTypeRequiredDescription
hub_idstringyes
role_idstringyes
permissionsstring[]yes

set_hub_role_requirements

Scope: hubs:write

Replace a role's join requirements. requirements is the full ordered array of { rule_type, config } using rule_type slugs from list_hub_catalog (kyc_verified, email_verified, profile_complete, has_tag {tag_slug}, answers_custom_question {question,…}, min_account_age_days {days}). Empty array clears them.

ParameterTypeRequiredDescription
hub_idstringyes
role_idstringyes
requirementsobject[]yes

suspend_hub_member

Scope: hubs:write

Suspend a member (revokes access, keeps the row). member_id from list_hub_members.

ParameterTypeRequiredDescription
hub_idstringyes
member_idstringyes

unassign_hub_from_space

Scope: hubs:write

Disconnect a hub from its operating space. The hub stays owned by the account; only the space delegation is removed.

ParameterTypeRequiredDescription
hub_idstringyes

update_hub

Scope: hubs:write

Edit a hub the account owns: name, description, short_description, logo_url, banner_url, visibility, category, business_description, hub_fee_percent (0–100 commission), default_contract_id, media (gallery [{ id, type, url, thumbnail_url, caption }]). (Enabling commerce / status changes go through the hub's review flow.)

ParameterTypeRequiredDescription
hub_idstringyes
namestring
descriptionstring
short_descriptionstring
logo_urlstring
banner_urlstring
visibilitypublic | private
categorycommerce | services | jobs | dating | community | other
business_descriptionstring
hub_fee_percentnumber
default_contract_idstring
mediaobject[]

update_hub_course

Scope: hubs:write

Edit a classroom course (title, description, cover_url, sort_order). course_id from list_hub_courses.

ParameterTypeRequiredDescription
hub_idstringyes
course_idstringyes
titlestring
descriptionstring
cover_urlstring
sort_ordernumber

update_hub_discussion

Scope: hubs:write

Edit a discussion thread — title/body, pin/lock, or category. discussion_id from list_hub_discussions.

ParameterTypeRequiredDescription
hub_idstringyes
discussion_idstringyes
titlestring
bodystring
is_pinnedboolean
is_lockedboolean
category_idstring

update_hub_event

Scope: hubs:write

Edit a hub event. event_id from list_hub_events.

ParameterTypeRequiredDescription
hub_idstringyes
event_idstringyes
titlestring
descriptionstring
location_typeonline | in_person
locationstring
starts_atstring
ends_atstring
cover_urlstring

update_hub_lesson

Scope: hubs:write

Edit a classroom lesson (title, content, video_url, attachments, sort_order). lesson_id from list_hub_lessons.

ParameterTypeRequiredDescription
hub_idstringyes
lesson_idstringyes
titlestring
contentstring
video_urlstring
attachmentsobject[]
sort_ordernumber

update_hub_membership_plan

Scope: hubs:write

Patch the hub's ACTIVE paid membership plan in place (price, interval, granted role, lapse behavior).

ParameterTypeRequiredDescription
hub_idstringyes
billingone_time | subscription
price_centsnumber
currencystring
billing_intervalmonth | year
lapse_behaviorremove | downgrade
grants_hub_role_idstring
lapse_role_idstring

update_hub_moderator

Scope: hubs:write

Update a moderator's permissions. moderator_id from list_hub_moderators.

ParameterTypeRequiredDescription
hub_idstringyes
moderator_idstringyes
permissionsobject

update_hub_resource

Scope: hubs:write

Edit a resource in the hub library. resource_id from list_hub_resources (space-side).

ParameterTypeRequiredDescription
hub_idstringyes
resource_idstringyes
titlestring
descriptionstring
categorystring
urlstring
file_urlstring
file_namestring
iconstringA Lucide icon name (e.g. 'BookOpen') or an image URL.
sort_ordernumber

update_hub_role

Scope: hubs:write

Edit a hub role's fields (name, description, icon, color, auto_approve, is_public, sort_order). role_id from list_hub_roles.

ParameterTypeRequiredDescription
hub_idstringyes
role_idstringyes
namestring
descriptionstring
iconstring
colorstring
auto_approveboolean
is_publicboolean
sort_ordernumber

update_hub_room

Scope: hubs:write

Edit a hub room (title, description, recording, schedule, access control). room_id from list_hub_rooms.

ParameterTypeRequiredDescription
hub_idstringyes
room_idstringyes
titlestring
descriptionstring
modeaudio | video
record_sessionsboolean
scheduled_startstring
scheduled_endstring
require_approvalboolean
track_attendanceboolean
scheduleobject
allowed_rolesstring[]
allowed_membersstring[]

update_hub_tab

Scope: hubs:write

Edit a hub tab (name, icon, visibility, sort_order, or merge into its config). tab_id from list_hub_tabs.

ParameterTypeRequiredDescription
hub_idstringyes
tab_idstringyes
namestring
iconstring
configobject
sort_ordernumber
is_visibleboolean

Integrations

add_integration_action

Scope: integrations:write

Add an action (a callable endpoint) to a custom integration. Once the integration is assigned to a space, each action becomes a tool that space's agents can call.

ParameterTypeRequiredDescription
integration_idstringyesCustom integration id from list_custom_integrations
namestringyesAction name, e.g. 'create_contact'
descriptionstringWhat it does — shown to the agent so it knows when to use it.
methodGET | POST | PUT | PATCH | DELETEHTTP method (default GET)
pathstringyesPath appended to base_url, e.g. '/contacts'. May contain {{param}} placeholders.
headersobjectOptional extra headers (auth is added automatically).
body_templatestringOptional request body template with {{param}} placeholders.
parametersobject[]Parameters the agent fills: each { name, type, required?, description? }.
is_polling_actionbooleanMark true if this action is run by the polling scheduler (data_flow_mode='polling').

assign_ad_account_to_space

Scope: integrations:write

Give a space access to a connected ad account (from list_integrations) so its agents can create/manage campaigns on it. REQUIRES OWNER APPROVAL (two-call flow).

ParameterTypeRequiredDescription
ad_account_idstringAd account id from list_integrations
space_idstringTarget space id
approved_action_idstring

assign_bank_account_to_space

Scope: integrations:write

Give a space access to a connected bank account (from list_integrations) so its finance surfaces can use it. REQUIRES OWNER APPROVAL (two-call flow).

ParameterTypeRequiredDescription
bank_account_idstringBank account id from list_integrations
space_idstringTarget space id
approved_action_idstring

assign_composio_connection_to_space

Scope: integrations:write

Give a space access to a connected third-party app (Composio — Gmail, Outlook, Calendar…, from list_integrations) so its agents can use it. REQUIRES OWNER APPROVAL (two-call flow).

ParameterTypeRequiredDescription
composio_connection_idstringThird-party app connection id from list_integrations
space_idstringTarget space id
approved_action_idstring

assign_custom_integration_to_space

Scope: integrations:write

Give a space access to a custom integration — its agents can then call the integration's actions. REQUIRES OWNER APPROVAL (two-call flow).

ParameterTypeRequiredDescription
custom_integration_idstringCustom integration id from list_custom_integrations
space_idstringTarget space id
approved_action_idstring

assign_social_account_to_space

Scope: integrations:write

Give a space access to a connected social account (from list_integrations) so its agents can post/manage DMs on it. REQUIRES OWNER APPROVAL (two-call flow).

ParameterTypeRequiredDescription
social_account_idstringSocial account id from list_integrations
space_idstringTarget space id
approved_action_idstring

create_custom_integration

Scope: integrations:write

Build a custom integration to ANY REST/HTTP API (GoHighLevel, HubSpot, an internal service…) so your agents can call it. Provide the base URL, how it authenticates, and optionally its actions (endpoints). Any credentials go straight to encrypted Vault and are never readable back. Executes immediately; the integration is UNASSIGNED until you call assign_custom_integration_to_space (owner approval). If the OWNER must supply the API key, capture it with request_secret_input first — never ask them to paste a key into chat.

ParameterTypeRequiredDescription
namestringyesDisplay name, e.g. 'GoHighLevel'
base_urlstringyesAPI base URL, e.g. 'https://services.leadconnectorhq.com'
auth_typeapi_key | bearer_token | oauth2 | custom_header | basic_auth | noneyesHow the API authenticates
credentialsobjectSecret values keyed by field, e.g. { "api_key": "..." }, { "token": "..." }, or { "username": "...", "password": "..." }. Stored encrypted in Vault; never readable back.
auth_config_metaobjectNon-secret auth metadata, e.g. { "header_name": "X-Api-Key" } for custom_header, or { "token_url": "..." } for oauth2.
categorystringOptional grouping label, e.g. 'crm'
descriptionstring
instructionsstringPlain-text guidance for agents on when/how to use this integration.
data_flow_modeoutbound_only | webhook | pollingDefault 'outbound_only' (agents call the API). 'webhook' = the app calls us; 'polling' = we poll it on a schedule.
actionsobject[]Optional initial actions (endpoints): each { name, description?, method, path, headers?, body_template?, parameters?, is_polling_action? }. body_template may use {{param}} placeholders. Add more later with add_integration_action.

delete_custom_integration

Scope: integrations:write

Permanently delete a custom integration (and its actions, events, and space assignments). Its stored credentials are wiped from Vault.

ParameterTypeRequiredDescription
integration_idstringyesCustom integration id

delete_integration_action

Scope: integrations:write

Remove an action from a custom integration.

ParameterTypeRequiredDescription
action_idstringyesAction id from list_custom_integrations

list_custom_integrations

Scope: integrations:read

List the account's custom API integrations in detail — base URL, auth type, every defined action (endpoint), and which spaces each is assigned to. Use before add_integration_action / update_custom_integration.

list_integrations

Scope: integrations:read

See EVERY connected integration across the account and which spaces can use each: custom API integrations, social accounts, ad accounts, bank accounts, and third-party apps (Composio). Each item includes the id + the assign_with tool to hand it to a space. (Professional email and domains have their own tools: list_email_addresses, list_domains.)

unassign_ad_account_from_space

Scope: integrations:write

Revoke a space's access to an ad account.

ParameterTypeRequiredDescription
ad_account_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

unassign_bank_account_from_space

Scope: integrations:write

Revoke a space's access to a bank account.

ParameterTypeRequiredDescription
bank_account_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

unassign_composio_connection_from_space

Scope: integrations:write

Revoke a space's access to a third-party app connection.

ParameterTypeRequiredDescription
composio_connection_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

unassign_custom_integration_from_space

Scope: integrations:write

Revoke a space's access to a custom integration.

ParameterTypeRequiredDescription
custom_integration_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

unassign_social_account_from_space

Scope: integrations:write

Revoke a space's access to a social account.

ParameterTypeRequiredDescription
social_account_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

update_custom_integration

Scope: integrations:write

Update a custom integration's metadata (name/description/base_url/category/instructions/data_flow_mode), disable/enable it (status), or rotate its credentials. Credentials go straight to encrypted Vault.

ParameterTypeRequiredDescription
integration_idstringyesCustom integration id
namestring
descriptionstring
base_urlstring
categorystring
instructionsstring
statusactive | disabledDisable to stop all agents from using it without deleting it.
data_flow_modeoutbound_only | webhook | polling
credentialsobjectNew credential values to rotate to (encrypted in Vault, never readable back).
auth_config_metaobject

update_integration_action

Scope: integrations:write

Edit an existing action on a custom integration (any of method/path/headers/body_template/parameters/etc.).

ParameterTypeRequiredDescription
action_idstringyesAction id from list_custom_integrations
namestring
descriptionstring
methodGET | POST | PUT | PATCH | DELETE
pathstring
headersobject
body_templatestring
parametersobject[]
is_polling_actionboolean

Members

invite_to_space

Scope: members:write

Send an email invitation to join a space.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
emailstringyesEmail address to invite
rolemember | editor | adminRole (default: member)

list_space_members

Scope: members:read

List a space's members (user ids and roles).

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)

remove_space_member

Scope: members:write

Remove a member from a space. The space owner cannot be removed.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
user_idstringyesMember's user id (from list_space_members)

Phone

assign_phone_number_to_space

Scope: phone:write

Assign one of the account's existing phone numbers to a space.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
phone_numberstringE.164 number the account owns
phone_number_idstringAlternative: the number's UUID

Scope: phone:write

Create (or refresh) a public hosted SMS consent/opt-in page for a campaign draft and set it as the draft's consent_url. Carriers verify this URL anonymously. The consent_text must state: the brand name, what messages subscribers get and how often, 'Message and data rates may apply', 'Reply STOP to cancel, HELP for help', and that consent is not shared with third parties. space_id decides which space hosts the page — ask the owner if unsure; do not guess.

ParameterTypeRequiredDescription
campaign_idstringyesCampaign draft to attach the page to
space_idstringyesSpace that hosts the public page (owner's choice)
consent_textstringyesFull consent/opt-in copy for the page
brand_namestringShown in the page title

delete_10dlc_draft

Scope: phone:write

Delete a 10DLC brand or campaign DRAFT. Deleting a brand draft also deletes its campaign drafts. Registered brands/campaigns can only be deleted by the owner in the UI (that also deregisters them at Telnyx).

ParameterTypeRequiredDescription
kindstringyes'brand' or 'campaign'
idstringyes

draft_10dlc_brand

Scope: phone:write

Prepare a 10DLC brand registration as a DRAFT for the owner to review and submit (submission + the $4/mo billing consent happen in Backstage → Phone Numbers). For businesses: legal name must match IRS records (CP-575) exactly and a 9-digit EIN is required, or identity verification fails. Sole proprietors register under their own legal name with a mobile number that receives an SMS verification PIN. Returns a compliance report — fix errors before telling the owner it's ready.

ParameterTypeRequiredDescription
brand_namestringyesLegal business name (or full legal person name for sole proprietors)
brand_typestringyessole_proprietor | private_profit | public_profit | non_profit | government
verticalstringyesIndustry, e.g. TECHNOLOGY, RETAIL, HEALTHCARE (TCR category or a close alias)
einstring9-digit EIN / Tax ID — required unless sole_proprietor
mobile_phonestringSole proprietors only: mobile number that will receive the verification PIN
phonestringBusiness support phone (required for non-sole-prop)
websitestring
streetstring
citystring
statestring
postal_codestring
countrystringDefault US
stock_exchangestringpublic_profit only
stock_symbolstringpublic_profit only

draft_10dlc_campaign

Scope: phone:write

Prepare a 10DLC SMS campaign as a DRAFT under a brand for the owner to review and submit ($10/mo, consented in the UI). Carriers reject vague campaigns — the description must say concretely WHO the recipients are, HOW they opt in (form, checkbox, keyword), and WHAT they receive; sample messages must identify the brand by name and match the declared use case; marketing samples need 'Reply STOP to opt out'. A public consent-page URL is strongly recommended (create_sms_consent_page can host one). Returns a compliance report.

ParameterTypeRequiredDescription
brand_idstringyesThe brand (draft or approved) this campaign belongs to
campaign_namestringFriendly label
use_casestringyescustomer_care | marketing | 2fa | account_notifications | delivery_notifications | low_volume_mixed | ... (sole-prop brands always register as sole_proprietor)
descriptionstringyesWho receives messages, how they opted in, what they receive
sample_message_1stringyesRealistic example SMS including the brand name
sample_message_2string
sample_message_3string
consent_urlstringPublic opt-in/consent page URL (the brand's own site, an existing Wakato page, or generate one)
help_keywordsstringDefault HELP
opt_out_keywordsstringDefault STOP,UNSUBSCRIBE — must include STOP

get_10dlc_status

Scope: phone:read

Full 10DLC SMS-compliance picture: brands, campaigns (drafts included), and which phone numbers can already send SMS. Pass sync=true to refresh pending brands/campaigns from the carrier registry first — use this to poll for approval instead of asking the owner to click Refresh. US numbers cannot send SMS until an approved brand + active campaign are linked to them.

ParameterTypeRequiredDescription
syncbooleanRefresh pending rows from Telnyx before reporting (slower)

Scope: phone:write

Link one of the account's phone numbers to an ACTIVE 10DLC campaign so it can send SMS. Free and reversible. Campaigns auto-link existing numbers on activation — use this for numbers bought later. Sole-proprietor campaigns allow 1 number.

ParameterTypeRequiredDescription
phone_number_idstringyesUUID from list_phone_numbers
campaign_idstringyes

list_phone_numbers

Scope: phone:read

List the account's phone numbers with billing status and space assignment.

purchase_phone_number

Scope: phone:write

Purchase a phone number from search results. Bills the account wallet monthly and counts against this key's spend limit. Optionally assigns it to a space.

ParameterTypeRequiredDescription
phone_numberstringyesE.164 number from search results
space_idstringSpace to assign it to (optional)
country_codestring
monthly_costnumberMonthly cost from search results (USD)

search_available_phone_numbers

Scope: phone:read

Search local phone numbers available for purchase (number, region, monthly cost).

ParameterTypeRequiredDescription
country_codestringISO country code, default US
area_codestringPreferred area code, e.g. 415
containsstringDigits the number should contain
limitnumberMax results (default 10, cap 20)

update_10dlc_brand_draft

Scope: phone:write

Update a 10DLC brand DRAFT (only rows with status 'draft'). Send just the fields to change. Returns the updated draft plus a fresh compliance report.

ParameterTypeRequiredDescription
brand_idstringyes
brand_namestring
brand_typestring
verticalstring
einstring
mobile_phonestring
phonestring
websitestring
streetstring
citystring
statestring
postal_codestring
countrystring
stock_exchangestring
stock_symbolstring

update_10dlc_campaign_draft

Scope: phone:write

Update a 10DLC campaign DRAFT (only rows with status 'draft'). Send just the fields to change. Returns the updated draft plus a fresh compliance report.

ParameterTypeRequiredDescription
campaign_idstringyes
campaign_namestring
use_casestring
descriptionstring
sample_message_1string
sample_message_2string
sample_message_3string
consent_urlstring
help_keywordsstring
opt_out_keywordsstring

validate_10dlc_draft

Scope: phone:read

Preflight a 10DLC draft against the same deterministic carrier-compliance lint the submission form runs: brand identification in samples, opt-in clarity, STOP/HELP language, consent URL reachability and required phrases. Loop draft → validate → fix until it passes, THEN tell the owner it's ready to submit.

ParameterTypeRequiredDescription
campaign_idstringValidate a campaign draft (checks the consent URL live)
brand_idstringValidate a brand draft instead

Professional Email

assign_email_address_to_space

Scope: email:write

Assign one of the account's email addresses to a space so its surfaces can send from it.

ParameterTypeRequiredDescription
email_address_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

create_email_address

Scope: email:write

Create a professional email address (e.g. hello@yourdomain.com) on an email-enabled domain. REQUIRES OWNER APPROVAL (two-call flow). New addresses always require send approval in Agent Mail.

ParameterTypeRequiredDescription
email_addressstringFull address, e.g. hello@yourdomain.com
display_namestringSender display name (optional)
approved_action_idstring

enable_email_on_domain

Scope: email:write

Make one of the account's domains email-ready (Agent Mail): registers it for sending/receiving and auto-writes MX/SPF/DKIM DNS. REQUIRES OWNER APPROVAL (two-call flow). Domains bought through purchase_domain are already email-ready.

ParameterTypeRequiredDescription
domain_idstringDomain id from list_domains
space_idstringSpace to associate the mail domain with (optional)
approved_action_idstring

list_email_addresses

Scope: email:read

List the account's professional email addresses (Agent Mail identities) with their domain and space assignments.

unassign_email_address_from_space

Scope: email:write

Remove an email address's assignment to a space.

ParameterTypeRequiredDescription
email_address_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

Profiles

create_business_account

Scope: profiles:write

Create a DRAFT business account and fill whatever details you have — the owner completes verification afterward. This does NOT verify the business, accept any agreement, or enable payments: it only saves the business record (identity-light prefill). Verifying the business, accepting the verification agreement, and the sensitive identity/ownership checks are the OWNER's step at /settings/account-details/business/:id ('Create & Verify Business Account') — the agent cannot do it. Only profile_name is required; add everything else you know and leave the rest for the owner. Sensitive verification details (date of birth, government id, id documents) are never stored here — they're collected directly during verification. Returns the account_id and what's still missing before verification.

ParameterTypeRequiredDescription
profile_namestringyesBusiness display name (required)
usernamestringPublic @username, 3–30 chars [a-z0-9_], globally unique (optional)
legal_namestringLegal registered business name
dba_namestringDoing Business As / trade name if different
business_typestringsole_proprietor | llc | corporation | partnership | non_profit | other
year_establishedintegerYear founded, e.g. 2020
industrystring
descriptionstringShort business description
taglinestring
countrystringISO-2 country code (e.g. US) — LOCKS the verification/payout country once set; pick carefully
tax_idstringPrimary tax id (EIN in US, equivalent elsewhere)
vat_numberstringInternational VAT number (optional)
registration_numberstringBusiness registration number (optional)
incorporation_statestringState/province where the entity is registered
incorporation_countrystringISO-2 country where the entity is registered
contact_emailstring
support_emailstring
contact_phonestring
mobile_phonestringMobile used for SMS verification
website_urlstring
address_streetstring
address_citystring
address_statestring
address_postal_codestring
address_countrystringISO-2 country of the business address
mailing_same_as_businessbooleantrue (default) = mailing address = business address
mailing_streetstring
mailing_citystring
mailing_statestring
mailing_postal_codestring
mailing_countrystring
linkedin_urlstring
twitter_urlstring
facebook_urlstring
instagram_urlstring
representative_first_namestringPrimary person legally responsible — first name
representative_last_namestring
representative_emailstring
representative_phonestring
representative_titlestringe.g. Owner, CEO, Director
representative_ownership_percentnumber0–100
ownersobject[]Additional beneficial owners/members (identity-light). Replaces the full owners list.

create_profile_post

Scope: profiles:write

Publish a post to a profile's Posts feed (the owner's wall). Needs body text and/or media. media = [{ url, type:'image'|'video' }]. Add the 'posts' tab (set_profile_tabs) so visitors see the feed.

ParameterTypeRequiredDescription
profile_idstringyes
bodystringPost text (max 10000 chars)
mediaobject[]Attached media: [{ url, type:'image'|'video' }]
link_urlstringOptional link attached to the post
is_pinnedbooleanPin to the top of the feed

create_wakato_profile

Scope: profiles:write

Create a public Wakato Profile on one of the account's accounts. Defaults to the personal (admin) account; pass account_type 'business' + account_id (from list_profile_accounts) for a business profile. Starts with the default content tabs (personal: About, Resources; business also gets Products, Reviews). The account's FIRST profile automatically becomes its primary. is_public defaults true — the page goes live immediately. Returns the profile id and public URL.

ParameterTypeRequiredDescription
account_typeadmin | business'admin' (personal, default) or 'business'
account_idstringBusiness account id (required only for account_type 'business')
profile_namestringPage title / profile name
profile_descriptionstringShort intro/bio shown under the title
video_urlstringHero video: a YouTube URL or a direct video file URL
thumbnail_urlstringCustom video thumbnail URL (optional)
selected_themestringTheme id (default '1')
is_publicbooleanPublish immediately (default true); false = private draft
make_primarybooleanMake this the account's default @username page

delete_profile_post

Scope: profiles:write

Delete a post from a profile's feed.

ParameterTypeRequiredDescription
post_idstringyesPost id from list_profile_posts

delete_wakato_profile

Scope: profiles:write

Permanently delete a Wakato Profile (and its posts + storefront links). If it was the account's primary and other profiles remain, the newest survivor is promoted to primary automatically.

ParameterTypeRequiredDescription
profile_idstringyes

get_business_details

Scope: profiles:read

Read a business account's full details — legal/tax info, addresses, the primary representative, additional owners — plus its verification status (verified? submitted? can it get paid?) and, when not yet verified, exactly which required fields are still missing. Use this to see what's filled and what to add before the owner verifies. account_id from list_profile_accounts.

ParameterTypeRequiredDescription
account_idstringyesBusiness account id (from list_profile_accounts)

get_wakato_profile

Scope: profiles:read

Get one Wakato Profile in full: name, description, video, theme, public/primary state, custom domain, its content tabs (read-modify-write these with set_profile_tabs), and curated storefront product ids. Use before editing.

ParameterTypeRequiredDescription
profile_idstringyesProfile id from list_wakato_profiles

list_cloud_agents

Scope: profiles:read

List the account's cloud agents (id, name, space, status, public_token) — the pool you can embed in a profile's 'agent' tab (set_profile_tabs → cloudAgentId + cloudAgentToken).

list_my_products

Scope: profiles:read

List the account's own commerce listings (id, title, price, status) — the pool you can curate onto a business profile's storefront with set_profile_products. Product/Review CONTENT itself always comes from commerce; this is just for choosing which listings a profile features.

list_profile_accounts

Scope: profiles:read

List the accounts a Wakato Profile can be attached to: the one personal (admin) account plus any business accounts, each with its id, name, and @username. Start here — create_wakato_profile needs a business account id (personal defaults automatically).

list_profile_followers

Scope: profiles:read

List an account's followers (people/businesses following it). account_type 'admin' (personal) or 'business' + account_id from list_profile_accounts.

ParameterTypeRequiredDescription
account_typeadmin | business
account_idstringRequired when account_type=business.

list_profile_following

Scope: profiles:read

List the accounts an account is following. account_type 'admin'/'business' + account_id from list_profile_accounts.

ParameterTypeRequiredDescription
account_typeadmin | business
account_idstringRequired when account_type=business.

list_profile_posts

Scope: profiles:read

List posts on a profile's Posts feed (most recent first, pinned on top).

ParameterTypeRequiredDescription
profile_idstringyes
limitnumberMax posts (default 25, cap 100)

list_wakato_profiles

Scope: profiles:read

List all of the account's public Wakato Profiles (the /profile/:username pages) with their public URL, whether each is public and the account's primary, video/tab presence, and view count.

set_primary_profile

Scope: profiles:write

Make a profile the account's primary — the one the bare @username URL (/profile/:username) resolves to. Only one profile per account is primary at a time (this unsets any other). Bare-@username resolution applies to the personal account; business profiles are always addressed by their full URL.

ParameterTypeRequiredDescription
profile_idstringyes

set_profile_products

Scope: profiles:write

Choose exactly which of the account's listings appear on a BUSINESS profile's storefront (Products tab). Pass the full set of product_ids (from list_my_products) — this replaces the current selection; an empty array clears it. Only business/seller profiles have a storefront.

ParameterTypeRequiredDescription
profile_idstringyes
product_idsstring[]yesThe listings to feature (replaces the current storefront set).

set_profile_tabs

Scope: profiles:write

Replace a profile's content tabs (read the current set with get_wakato_profile first, then send the full new array). Each tab = { id, label, type, isDefault?, ...type fields }. Types: 'about' (intro, optional pageId to render a Page), 'resources' (resources: [{ id,title,description,thumbnailUrl,linkUrl }]), 'page' (pageId — render one of the space's Pages), 'social' (spaceId + optional platforms[]/autoUpdate — pulls the space's social posts), 'posts' (the profile's own feed), 'products' & 'reviews' (business-only; CONTENT is pulled from commerce — you only choose whether the tab shows), 'agent' (business-only; cloudAgentId — embeds a cloud-agent widget). Products/Reviews/Agent tabs are ignored on personal profiles. An About tab is always kept.

ParameterTypeRequiredDescription
profile_idstringyes
tabsobject[]yesThe full ordered tab list (replaces the existing tabs).

update_account_identity

Scope: profiles:write

Edit the account HEADER identity that a profile shows but which lives on the ACCOUNT, not the profile row: @username, avatar, name/contact. account_type 'admin' (personal — display_name/first_name/last_name/avatar_url/bio/username/preferred_language) or 'business' (needs account_id from list_profile_accounts — profile_name/description/avatar_url/contact_email/contact_phone/website_url/industry/tagline/socials/username). username = 3–30 chars [a-z0-9_], globally unique.

ParameterTypeRequiredDescription
account_typeadmin | businessDefaults to admin (personal).
account_idstringBusiness account id (required when account_type=business).
usernamestring
avatar_urlstring
display_namestring
first_namestring
last_namestring
biostring
preferred_languageen | fr | es
profile_namestring
descriptionstring
contact_emailstring
contact_phonestring
website_urlstring
industrystring
taglinestring
linkedin_urlstring
twitter_urlstring
facebook_urlstring
instagram_urlstring

update_business_details

Scope: profiles:write

Fill in or correct a DRAFT business account's details on an existing account_id (from list_profile_accounts). Send only the fields you're changing — partial updates are fine, so add what you have now and the owner can add the rest later. Same identity-light scope as create_business_account: this NEVER verifies the business, accepts the verification agreement, or enables payments — verification stays the owner's step. Passing owners replaces the whole additional-owners list. Returns which required fields are still missing before verification.

ParameterTypeRequiredDescription
account_idstringyesBusiness account id (from list_profile_accounts)
usernamestringPublic @username, 3–30 chars [a-z0-9_] (null/empty clears it)
profile_namestring
legal_namestring
dba_namestring
business_typestringsole_proprietor | llc | corporation | partnership | non_profit | other
year_establishedinteger
industrystring
descriptionstring
taglinestring
tax_idstring
vat_numberstring
registration_numberstring
incorporation_statestring
incorporation_countrystring
contact_emailstring
support_emailstring
contact_phonestring
mobile_phonestring
website_urlstring
address_streetstring
address_citystring
address_statestring
address_postal_codestring
address_countrystring
mailing_same_as_businessboolean
mailing_streetstring
mailing_citystring
mailing_statestring
mailing_postal_codestring
mailing_countrystring
linkedin_urlstring
twitter_urlstring
facebook_urlstring
instagram_urlstring
representative_first_namestring
representative_last_namestring
representative_emailstring
representative_phonestring
representative_titlestring
representative_ownership_percentnumber0–100
ownersobject[]Additional beneficial owners/members (identity-light). Replaces the full owners list.

update_profile_post

Scope: profiles:write

Edit a post on a profile's feed (body, media, link, or pin state). Send only what changes.

ParameterTypeRequiredDescription
post_idstringyesPost id from list_profile_posts
bodystring
mediaobject[]
link_urlstringLink URL, or null to clear
is_pinnedboolean

update_wakato_profile

Scope: profiles:write

Edit a Wakato Profile's fields. Send only what changes. Setting is_public true/false publishes/unpublishes the page (no approval needed). custom_domain points the profile at a domain you control (pass null to clear) — DNS for the domain is managed separately.

ParameterTypeRequiredDescription
profile_idstringyes
profile_namestring
profile_descriptionstring
video_urlstringYouTube or direct video URL
thumbnail_urlstring
selected_themestring
is_publicbooleantrue = live, false = private
custom_domainstringCustom domain for the profile, or null to clear

Secrets

assign_secret_to_space

Scope: secrets:write

Give a space access to one of the account's secrets (its agents can then reference it via use_secret without seeing the value). REQUIRES OWNER APPROVAL (two-call flow).

ParameterTypeRequiredDescription
secret_idstringSecret id from list_secrets
space_idstringTarget space id
approved_action_idstring

create_secret

Scope: secrets:write

Store a secret (API key, login, token...) encrypted in the account vault. The value goes straight to encrypted storage and cannot be read back through account tools. Executes immediately (creation exposes nothing); sharing it with a space via assign_secret_to_space is what requires owner approval.

ParameterTypeRequiredDescription
namestringyesDisplay name, e.g. 'Stripe live key'
categorystringyesGrouping, e.g. 'credentials', 'identity', 'financial'
sub_typestringyesKind of secret: api_key, username_password, oauth_token, bearer_token, ssh_key, email_account, ...
fieldsobjectyesThe secret's values keyed by field name, e.g. { "api_key": "sk-..." }
descriptionstring

list_secrets

Scope: secrets:read

List the account's secrets (name, type, masked summary, space assignments). Values are NEVER readable through account tools.

request_secret_input

Scope: secrets:write

PREFERRED way to capture any sensitive value the owner must provide (API key, password, token, private key…). Opens a secure paste box pinned in this PM chat: the owner types the value straight into it and it goes directly to encrypted storage — you NEVER see the value, and it never appears in the chat. You only describe the SHAPE (name + which fields to collect); pass NO values. To rotate an existing secret, pass its secret_id (its type is kept). Use this instead of asking the owner to paste a secret into the chat for create_secret.

ParameterTypeRequiredDescription
namestringDisplay name for the secret, e.g. 'Stripe live key' (required for a new secret)
categorystringGrouping, e.g. 'credentials', 'identity', 'financial' (default 'credentials')
sub_typestringKind of secret: api_key, username_password, oauth_token, bearer_token, ssh_key, email_account, … (default 'api_key'). Drives the default fields.
fieldsobject[]Optional. The field(s) to collect, as an array of { key, label, multiline?, optional? } (or plain strings). SHAPE ONLY — never include values. Omit to use a sensible default for the sub_type.
secret_idstringTo rotate/change an existing secret, its id from list_secrets. Omit to create a new one.
purposestringOne line on why you need it — shown to the owner above the box.
descriptionstring

unassign_secret_from_space

Scope: secrets:write

Revoke a space's access to a secret.

ParameterTypeRequiredDescription
secret_idstringyes
space_idstringyesTarget space id (must be a space this key may manage)

Space API Keys

create_space_api_key

Scope: space_keys:write

Mint a scoped Space API key (wks_live_*) for a space this key may manage. The token is returned ONCE — use it against space-mcp / space-api for in-space work (contacts, tables, pages, automations...). Scope categories: ai, contacts, tables, pages, automations, forms, agent_mail, calendar, tasks, assets, social, messaging, documents, whiteboards, meet, phone, ads, cloud_agents, finance, integrations, secrets, wallet, apps.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
namestringyesKey name shown in the space's key list
scopesobjectyesScope map, e.g. { "contacts": { "read": true, "write": true }, "ai": { "run": true } }
expires_atstringOptional ISO expiry timestamp
allowed_modelsstring[]Optional model allowlist (model_key values) for the new key

list_space_api_keys

Scope: space_keys:read

List a space's API keys (metadata only — tokens are never retrievable).

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)

revoke_space_api_key

Scope: space_keys:write

Revoke a space API key. Immediate and irreversible.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
key_idstringyesKey id from list_space_api_keys

Spaces

claim_space_release

Scope: spaces:write

Claim a PURCHASED whole-space release into the account's space-snapshot library (entitlement-checked). Returns the claimed space snapshot with its typed public_id (snap_space_*) — then use create_space_from_snapshot to build the space. Artifact (agent/app) releases don't need claiming — install_snapshot takes release_id directly.

ParameterTypeRequiredDescription
release_idstringyesThe purchased release id (kind 'space').

create_snapshot

Scope: spaces:write

Capture a cloud agent or Space App from a managed space into the portable snapshot library. Captures config/code only — channels, secrets, conversations and app data stay behind (they become install-time requirements). Returns the snapshot with its typed public_id (snap_agent_* / snap_app_*) — installable anywhere with install_snapshot.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
kindagent | appyes'agent' = cloud agent, 'app' = Space App.
source_idstringyesThe cloud_agent id or app id to capture (must live in that space).
namestringSnapshot name (defaults to the source's name).
descriptionstring
visibilityprivate | team | publicDefault private. 'team' = members of the source space can install it; 'public' = anyone with the id.

create_space

Scope: spaces:write

Create a new space owned by the account. New spaces start with a $0 budget — allocate funds before running AI work. Spaces created by this key are always manageable by it, even under a space allowlist.

ParameterTypeRequiredDescription
namestringyesSpace name
descriptionstringSpace description
iconstringIcon name (optional)
colorstringHex color, defaults to #6366f1

create_space_from_snapshot

Scope: spaces:write

Create a NEW space from a whole-space snapshot id (yours or one claimed from a purchased release) — restores its pages, forms, documents, tables, automations, booking pages, message templates, cloud agents, Space Apps, blog, assets, mail templates + signatures, email/SMS/call campaigns (as sender-less DRAFTS — no sender, no send history), call scripts, audiences, calendar events, business research, tags and contacts with fresh ids, then returns a READINESS report: missing AI models are auto-enabled and owned secrets auto-assigned; readiness.missing lists what still needs setup (secrets via request_secret_input, integrations, sending address / phone number for campaigns, a Space Computer for app agent features). Restored apps arrive consent-pending — the owner approves their capabilities. Secrets values, sending identity, live channels and message history never travel in snapshots.

ParameterTypeRequiredDescription
snapshot_idstringyesA space snapshot id (see list_space_snapshots). Accepts the typed public id (snap_space_*) or a bare uuid.
namestringName for the new space (defaults to the snapshot's name + ' copy').
descriptionstring
iconstring
colorstringHex color.

get_space

Scope: spaces:read

Get a space's details, budget, and member count.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)

install_snapshot

Scope: spaces:write

Install a snapshot (agent or app) into a space and get a readiness report. Missing models are auto-enabled and owned secrets matching by name auto-assigned; the report's missing array lists what still needs the owner — resolve secrets with request_secret_input/assign_secret_to_space and connect integrations. Snapshots never carry secret values, channels, or data.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
snapshot_idstringA library/shared snapshot id (from list_snapshots). Accepts the typed public id (snap_agent_* / snap_app_*) or a bare uuid.
release_idstringA purchased release id (alternative to snapshot_id).
share_tokenstringShare token if installing a snapshot shared via link.

list_snapshots

Scope: spaces:read

List portable snapshots (cloud agents or apps) that can be installed into a space — the account's own library plus any shared into that space. Each entry reports dependency_count and whether it came from_this_space. Omit space_id to list the whole library.

ParameterTypeRequiredDescription
space_idstringTarget space id (must be a space this key may manage)
kindagent | appFilter to agent or app snapshots.

list_space_snapshots

Scope: spaces:read

List the account's whole-space snapshots (structure + contents: pages, tables, automations, cloud agents, apps, contacts...), including snapshots claimed from purchased releases. Use create_space_from_snapshot with an id to rebuild one as a new space.

list_spaces

Scope: spaces:read

List the spaces this key may manage, each with its budget (allocated / spent / remaining).

update_space

Scope: spaces:write

Update a space's name, description, icon, or color.

ParameterTypeRequiredDescription
space_idstringyesTarget space id (must be a space this key may manage)
namestring
descriptionstring
iconstring
colorstring

On this page

AIget_my_modelset_my_modelBillingget_commerce_statusget_usage_summaryDomains & DNSadd_dns_recordassign_domain_to_spacedelete_dns_recordlist_dns_recordslist_domainspurchase_domainsearch_domainstoggle_domain_auto_renewunassign_domain_from_spaceupdate_dns_recordFunds & Budgetallocate_space_fundsget_space_allocationget_walletreclaim_space_fundsGateway Modelsdisable_space_modelenable_space_modellist_available_modelslist_space_modelsHubsadd_hub_discussion_replyadd_hub_moderatoradd_hub_tabapprove_hub_memberassign_hub_to_spacecreate_hubcreate_hub_coursecreate_hub_discussioncreate_hub_discussion_categorycreate_hub_eventcreate_hub_lessoncreate_hub_resourcecreate_hub_rolecreate_hub_roomdelete_hub_coursedelete_hub_discussiondelete_hub_discussion_categorydelete_hub_discussion_replydelete_hub_eventdelete_hub_lessondelete_hub_resourcedelete_hub_roledelete_hub_roomget_hubget_hub_attendanceget_hub_classroom_progressget_hub_membership_planget_hub_roleget_hub_statslist_hub_cataloglist_hub_courseslist_hub_discussion_categorieslist_hub_discussion_replieslist_hub_discussionslist_hub_event_rsvpslist_hub_eventslist_hub_lessonslist_hub_memberslist_hub_moderatorslist_hub_resourceslist_hub_roleslist_hub_roomslist_hub_tabslist_hubsreject_hub_memberremove_hub_memberremove_hub_membership_planremove_hub_moderatorremove_hub_tabreorder_hub_tabsset_hub_member_roleset_hub_membership_planset_hub_role_permissionsset_hub_role_requirementssuspend_hub_memberunassign_hub_from_spaceupdate_hubupdate_hub_courseupdate_hub_discussionupdate_hub_eventupdate_hub_lessonupdate_hub_membership_planupdate_hub_moderatorupdate_hub_resourceupdate_hub_roleupdate_hub_roomupdate_hub_tabIntegrationsadd_integration_actionassign_ad_account_to_spaceassign_bank_account_to_spaceassign_composio_connection_to_spaceassign_custom_integration_to_spaceassign_social_account_to_spacecreate_custom_integrationdelete_custom_integrationdelete_integration_actionlist_custom_integrationslist_integrationsunassign_ad_account_from_spaceunassign_bank_account_from_spaceunassign_composio_connection_from_spaceunassign_custom_integration_from_spaceunassign_social_account_from_spaceupdate_custom_integrationupdate_integration_actionMembersinvite_to_spacelist_space_membersremove_space_memberPhoneassign_phone_number_to_spacecreate_sms_consent_pagedelete_10dlc_draftdraft_10dlc_branddraft_10dlc_campaignget_10dlc_statuslink_number_to_campaignlist_phone_numberspurchase_phone_numbersearch_available_phone_numbersupdate_10dlc_brand_draftupdate_10dlc_campaign_draftvalidate_10dlc_draftProfessional Emailassign_email_address_to_spacecreate_email_addressenable_email_on_domainlist_email_addressesunassign_email_address_from_spaceProfilescreate_business_accountcreate_profile_postcreate_wakato_profiledelete_profile_postdelete_wakato_profileget_business_detailsget_wakato_profilelist_cloud_agentslist_my_productslist_profile_accountslist_profile_followerslist_profile_followinglist_profile_postslist_wakato_profilesset_primary_profileset_profile_productsset_profile_tabsupdate_account_identityupdate_business_detailsupdate_profile_postupdate_wakato_profileSecretsassign_secret_to_spacecreate_secretlist_secretsrequest_secret_inputunassign_secret_from_spaceSpace API Keyscreate_space_api_keylist_space_api_keysrevoke_space_api_keySpacesclaim_space_releasecreate_snapshotcreate_spacecreate_space_from_snapshotget_spaceinstall_snapshotlist_snapshotslist_space_snapshotslist_spacesupdate_space