{"version":"2.0","entrypoint":"agentstack.execute","total_actions":301,"domains":{"commands":[{"action":"commands.execute","safe_action":"commands_execute","summary":"Execute a single Protein Command via universal API."},{"action":"commands.execute_batch","safe_action":"commands_execute_batch","summary":"Execute multiple Protein Commands in batch."}],"projects":[{"action":"projects.get_projects","safe_action":"projects_get_projects","summary":"Get list of projects for the current user."},{"action":"projects.get_project","safe_action":"projects_get_project","summary":"Get detailed information about a specific project."},{"action":"projects.create_project","safe_action":"projects_create_project","summary":"Create a new project."},{"action":"projects.create_project_anonymous","safe_action":"projects_create_project_anonymous","summary":"Create a new anonymous project (for AI agents)."},{"action":"projects.update_project","safe_action":"projects_update_project","summary":"Update an existing project.","required_cap":"project_admin"},{"action":"projects.delete_project","safe_action":"projects_delete_project","summary":"Delete a project.","required_cap":"project_admin"},{"action":"projects.get_stats","safe_action":"projects_get_stats","summary":"Get project statistics."},{"action":"projects.get_users","safe_action":"projects_get_users","summary":"Get list of users in a project."},{"action":"projects.add_user","safe_action":"projects_add_user","summary":"Add a user to a project (requires Professional subscription or ecosystem context and manage_users/owner).","required_cap":"project_admin"},{"action":"projects.update_user_role","safe_action":"projects_update_user_role","summary":"Update a user's role in a project (requires manage_users or owner; cannot assign owner via this tool).","required_cap":"project_admin"},{"action":"projects.remove_user","safe_action":"projects_remove_user","summary":"Remove a user from a project (requires Professional subscription or ecosystem context).","required_cap":"project_admin"}],"rbac":[{"action":"rbac.get_roles","safe_action":"rbac_get_roles","summary":"Get list of roles for a project (system + custom). Returns id, name, permissions_bitmap, permissions, is_system."},{"action":"rbac.assign_role","safe_action":"rbac_assign_role","summary":"Assign a role to a user in a project. Requires manage_users or owner. Cannot assign owner via this tool."},{"action":"rbac.revoke_role","safe_action":"rbac_revoke_role","summary":"Revoke a role from a user in a project. User will get default viewer role. Requires manage_users or owner. Cannot revoke owner."},{"action":"rbac.check_permission","safe_action":"rbac_check_permission","summary":"Check if a user has a permission in a project. If user_id is omitted, checks current user."}],"processors":[{"action":"processors.list","safe_action":"processors_list","summary":"List all available processors with their metadata."},{"action":"processors.get_metadata","safe_action":"processors_get_metadata","summary":"Get detailed metadata for a specific processor."},{"action":"processors.execute","safe_action":"processors_execute","summary":"Execute a processor directly.","required_cap":"logic_write"}],"logic":[{"action":"logic.create","safe_action":"logic_create","summary":"Create new Logic Engine rule for project.","required_cap":"logic_write"},{"action":"logic.update","safe_action":"logic_update","summary":"Update existing Logic Engine rule.","required_cap":"logic_write"},{"action":"logic.delete","safe_action":"logic_delete","summary":"Delete a Logic Engine rule.","required_cap":"logic_write"},{"action":"logic.get","safe_action":"logic_get","summary":"Get detailed information about a Logic Engine rule."},{"action":"logic.list","safe_action":"logic_list","summary":"List all Logic Engine rules for project."},{"action":"logic.execute","safe_action":"logic_execute","summary":"Execute a Logic Engine rule immediately.","required_cap":"logic_write"},{"action":"logic.get_processors","safe_action":"logic_get_processors","summary":"Get list of available processors (same as processors.list but in logic context)."},{"action":"logic.get_commands","safe_action":"logic_get_commands","summary":"Get list of available commands for triggers."},{"action":"logic.flush_batch","safe_action":"logic_flush_batch","summary":"Force flush logic batch for a project (saves all accumulated rules immediately)","required_cap":"logic_write"},{"action":"logic.dry_run","safe_action":"logic_dry_run","summary":"Simulate a logic rule execution without side effects (F2.5)."},{"action":"logic.list_versions","safe_action":"logic_list_versions","summary":"List historical snapshots stored on a rule (F2.9)."},{"action":"logic.diff_versions","safe_action":"logic_diff_versions","summary":"Diff two rule snapshots (F2.9)."},{"action":"logic.restore_version","safe_action":"logic_restore_version","summary":"Roll a rule back to a prior snapshot (F2.9)."},{"action":"logic.export_json","safe_action":"logic_export_json","summary":"Export a logic rule as JSON for backup / cross-project copy."},{"action":"logic.import_json","safe_action":"logic_import_json","summary":"Import a logic rule from JSON (creates a new rule)."},{"action":"logic.attach_template","safe_action":"logic_attach_template","summary":"Install a template from the built-in catalog into the current project."},{"action":"logic.signals_catalog","safe_action":"logic_signals_catalog","summary":"List signal channels the logic engine can subscribe to."},{"action":"logic.mcp_actions_catalog","safe_action":"logic_mcp_actions_catalog","summary":"List MCP actions addressable from logic rules."}],"auth":[{"action":"auth.login","safe_action":"auth_login","summary":"Login to the system."},{"action":"auth.register","safe_action":"auth_register","summary":"Register a new user."},{"action":"auth.get_profile","safe_action":"auth_get_profile","summary":"Get user profile information."},{"action":"auth.update_profile","safe_action":"auth_update_profile","summary":"Update user profile."}],"payments":[{"action":"payments.create","safe_action":"payments_create","summary":"Create a new payment transaction.","required_cap":"payments"},{"action":"payments.get","safe_action":"payments_get","summary":"Get detailed payment information by payment ID.","required_cap":"payments"},{"action":"payments.list_transactions","safe_action":"payments_list_transactions","summary":"List all payment transactions for a project.","required_cap":"payments"},{"action":"payments.get_balance","safe_action":"payments_get_balance","summary":"Get current wallet balance for a project.","required_cap":"payments"},{"action":"payments.refund","safe_action":"payments_refund","summary":"Refund a completed payment.","required_cap":"payments"}],"wallets":[{"action":"wallets.list","safe_action":"wallets_list","summary":"List wallets for a project (and optionally user).","required_cap":"payments"},{"action":"wallets.create","safe_action":"wallets_create","summary":"Create a wallet for a project or user.","required_cap":"payments"},{"action":"wallets.deposit","safe_action":"wallets_deposit","summary":"Deposit funds to a wallet.","required_cap":"payments"},{"action":"wallets.transfer","safe_action":"wallets_transfer","summary":"Transfer funds between wallets (same project).","required_cap":"payments"}],"scheduler":[{"action":"scheduler.create_task","safe_action":"scheduler_create_task","summary":"Create a new scheduled task for automated execution.","required_cap":"scheduler"},{"action":"scheduler.get_task","safe_action":"scheduler_get_task","summary":"Get detailed information about a scheduled task by ID.","required_cap":"scheduler"},{"action":"scheduler.update_task","safe_action":"scheduler_update_task","summary":"Update an existing scheduler task (requires write permission).","required_cap":"scheduler"},{"action":"scheduler.list_tasks","safe_action":"scheduler_list_tasks","summary":"List all scheduled tasks for a project.","required_cap":"scheduler"},{"action":"scheduler.execute_task","safe_action":"scheduler_execute_task","summary":"Execute a scheduled task immediately, bypassing the cron schedule.","required_cap":"scheduler"},{"action":"scheduler.get_pool_tasks","safe_action":"scheduler_get_pool_tasks","summary":"Get all tasks from the execution pool (in-memory task queue).","required_cap":"scheduler"},{"action":"scheduler.get_pool_task_details","safe_action":"scheduler_get_pool_task_details","summary":"Get detailed information about a specific task from the execution pool.","required_cap":"scheduler"},{"action":"scheduler.delete_pool_task","safe_action":"scheduler_delete_pool_task","summary":"Remove a specific task from the execution pool (does not delete from database).","required_cap":"scheduler"},{"action":"scheduler.clear_pool_tasks","safe_action":"scheduler_clear_pool_tasks","summary":"Clear all tasks from the execution pool (does not delete from database).","required_cap":"scheduler"},{"action":"scheduler.refresh_pool","safe_action":"scheduler_refresh_pool","summary":"Force a refresh of the scheduler pool from the database.","required_cap":"scheduler"},{"action":"scheduler.get_all_db_tasks","safe_action":"scheduler_get_all_db_tasks","summary":"Get all scheduler and standalone tasks from the database (heavy operation).","required_cap":"scheduler"},{"action":"scheduler.cancel_task","safe_action":"scheduler_cancel_task","summary":"Cancel/remove a scheduler task (removes from pool and disables in database).","required_cap":"scheduler"}],"apikeys":[{"action":"apikeys.create","safe_action":"apikeys_create","summary":"Create a new API key for project access.","required_cap":"api_keys"},{"action":"apikeys.list","safe_action":"apikeys_list","summary":"List all API keys for a project.","required_cap":"api_keys"},{"action":"apikeys.delete","safe_action":"apikeys_delete","summary":"Delete an API key permanently.","required_cap":"api_keys"}],"analytics":[{"action":"analytics.get_usage","safe_action":"analytics_get_usage","summary":"Get project usage statistics and activity data."},{"action":"analytics.get_metrics","safe_action":"analytics_get_metrics","summary":"Get project performance metrics and analytics data."}],"system":[{"action":"system.ping","safe_action":"system_ping","summary":"Health check tool — always succeeds, no authentication required."}],"finance":[{"action":"finance.portfolio","safe_action":"finance_portfolio","summary":"User finance portfolio aggregate (three rails + JSON wallets).","required_cap":"payments|agentcoin"},{"action":"finance.activity","safe_action":"finance_activity","summary":"Unified wallet activity feed.","required_cap":"payments|agentcoin"},{"action":"finance.project.portfolio","safe_action":"finance_project_portfolio","summary":"Project business portfolio (operating + treasury + AGNT).","required_cap":"payments|project_admin"},{"action":"finance.dashboard_bundle","safe_action":"finance_dashboard_bundle","summary":"Finance hub landing aggregate (portfolio + billing + activity preview)."},{"action":"finance.project.fund","safe_action":"finance_project_fund","summary":"Fund a project via ecosystem USD transfer.","required_cap":"payments|project_admin"},{"action":"finance.project.contribute","safe_action":"finance_project_contribute","summary":"Member contribution: USD only from personal ecosystem wallet (project_id=1) to project treasury. Not for custom/game currencies."},{"action":"finance.project.contributions.list","safe_action":"finance_project_contributions_list","summary":"List member contributions for a project (FAP-masked)."}],"agentnet":[{"action":"agentnet.balance","safe_action":"agentnet_balance","summary":"Read AgentCoin (AGC) balance from the L0 PostgreSQL ledger for a project slice."},{"action":"agentnet.batch_proof","safe_action":"agentnet_batch_proof","summary":"Merkle inclusion paths for a posted AgentCoin batch (read-only)."},{"action":"agentnet.checkpoint.covering_batch","safe_action":"agentnet_checkpoint_covering_batch","summary":"Resolve the newest checkpoint epoch that covers a ledger ``batch_id`` (read-only)."},{"action":"agentnet.checkpoint.list_recent","safe_action":"agentnet_checkpoint_list_recent","summary":"List recent AgentCoin checkpoint epochs for a project (newest first; no ``batch_roots_json``)."},{"action":"agentnet.checkpoint.by_epoch","safe_action":"agentnet_checkpoint_by_epoch","summary":"Fetch one checkpoint row by epoch (includes ``batch_roots_json`` when stored)."},{"action":"agentnet.post_batch","safe_action":"agentnet_post_batch","summary":"Post a double-entry AgentCoin batch (idempotent per ``idempotency_key``)."},{"action":"agentnet.compute_credits.quote","safe_action":"agentnet_compute_credits_quote","summary":"Deterministic quote for AGC cost of compute credits (demo v1 rate table)."},{"action":"agentnet.compute_credits.purchase","safe_action":"agentnet_compute_credits_purchase","summary":"Purchase compute credits: AGC user→treasury batch + idempotent ``builder_energy`` top-up."},{"action":"agentnet.receipt.verify","safe_action":"agentnet_receipt_verify","summary":"Verify an AgentCoin receipt JSON (canonical hash + optional Merkle proof + optional Ed25519)."},{"action":"agentnet.evidence_receipt","safe_action":"agentnet_evidence_receipt","summary":"Build a self-contained evidence receipt (batch proof + checkpoint prefix witness)."},{"action":"agentnet.bridge.intents","safe_action":"agentnet_bridge_intents","summary":"List bridge settlement intents for a project slice."},{"action":"agentnet.bridge.events","safe_action":"agentnet_bridge_events","summary":"List normalized bridge chain events (relay idempotency log)."},{"action":"agentnet.bridge.supply_snapshot","safe_action":"agentnet_bridge_supply_snapshot","summary":"L0 AGC balance sum + in-flight bridge intents + optional EVM ``totalSupply``."},{"action":"agentnet.vault.nav","safe_action":"agentnet_vault_nav","summary":"ERC-4626 vault NAV (totalAssets, totalSupply). REST: GET /api/agentnet/{project_id}/vault/nav"},{"action":"agentnet.vault.deposit_confirm","safe_action":"agentnet_vault_deposit_confirm","summary":"Credit L0 agUSD shares after ERC-4626 deposit (operator/indexer)."},{"action":"agentnet.proof_to_task","safe_action":"agentnet_proof_to_task","summary":"Build ERC-8004 proof-to-task bundle; optional on-chain validation submit."},{"action":"agentnet.chain.finality_probe","safe_action":"agentnet_chain_finality_probe","summary":"Read-only finality label probe (Solana adapter stub + Base chain id)."},{"action":"agentnet.bridge.create_intent","safe_action":"agentnet_bridge_create_intent","summary":"Create bridge intent (in|out). REST: POST /api/agentnet/{project_id}/bridge/intents"},{"action":"agentnet.funding.offer","safe_action":"agentnet_funding_offer","summary":"Get funding offer after R1 USDT payment (opt-in R2 vault). REST: GET funding/offer"},{"action":"agentnet.funding.start_vault_deposit","safe_action":"agentnet_funding_start_vault_deposit","summary":"Start opt-in vault deposit intent linked to payment."},{"action":"agentnet.genome.get","safe_action":"agentnet_genome_get","summary":"Read L0 genome lineage entry for an entity (ecosystem.genome_lineage)."},{"action":"agentnet.genome.verify","safe_action":"agentnet_genome_verify","summary":"Verify commit_hash matches canonical GenomeTag JSON."},{"action":"agentnet.admin.schema_status","safe_action":"agentnet_admin_schema_status","summary":"Substrate M+ schema snapshot (required / deprecated / packed_in_8dna tiers)."},{"action":"agentnet.bnb.status","safe_action":"agentnet_bnb_status","summary":"BSC testnet rail status (RPC ping, registries)."},{"action":"agentnet.bnb.register_identity","safe_action":"agentnet_bnb_register_identity","summary":"Register Fleet agent on BSC ERC-8004 via BNBAgent SDK."},{"action":"agentnet.bnb.proof_bundle_for_run","safe_action":"agentnet_bnb_proof_bundle_for_run","summary":"L0 proof-to-task bundle for an agent run (read-only)."},{"action":"agentnet.bnb.apex_jobs_list","safe_action":"agentnet_bnb_apex_jobs_list","summary":"List agent runs with completed BNB APEX jobs (L0 events)."}],"admin":[{"action":"admin.data.health","safe_action":"admin_data_health","summary":"Cheap counts for platform admin data plane (projects/users DNA slices)."},{"action":"admin.data.people","safe_action":"admin_data_people","summary":"Admin people bundle: projects (list shape) + users for a project."},{"action":"admin.data.dna_list","safe_action":"admin_data_dna_list","summary":"Paginated DNA list with unified_8dna_role filters for admin Data hub."}],"assets":[{"action":"assets.create","safe_action":"assets_create","summary":"Create a new asset for the project.","required_cap":"assets_write"},{"action":"assets.get","safe_action":"assets_get","summary":"Get asset details by ID."},{"action":"assets.list","safe_action":"assets_list","summary":"List all assets in the project."},{"action":"assets.update","safe_action":"assets_update","summary":"Update an existing asset.","required_cap":"assets_write"},{"action":"assets.delete","safe_action":"assets_delete","summary":"Delete an asset from the project.","required_cap":"assets_write"}],"data_access":[{"action":"data_access.set_policy","safe_action":"data_access_set_policy","summary":"Create or update the field-level access policy for a project resource.","required_cap":"data_access_admin"},{"action":"data_access.get_policy","safe_action":"data_access_get_policy","summary":"Retrieve the current field-level access policy for a project."},{"action":"data_access.check_field","safe_action":"data_access_check_field","summary":"Check whether a specific role can read/write a field in a resource."},{"action":"data_access.test_mask","safe_action":"data_access_test_mask","summary":"Preview what fields a given role can read/write in a resource."},{"action":"data_access.get_defaults_template","safe_action":"data_access_get_defaults_template","summary":"Read the global Field Access Policy template from ecosystem project DNA (`config.field_access_defaults`: default_access, globals, resources)."},{"action":"data_access.set_defaults_template","safe_action":"data_access_set_defaults_template","summary":"Write the global FAP template on ecosystem project (admin tooling).","required_cap":"data_access_admin"},{"action":"data_access.apply_defaults_template","safe_action":"data_access_apply_defaults_template","summary":"Copy missing `resources.<name>` entries from the global template into `target_project_id`'s field_access_policy. Does not overwrite existing keys. Cannot target ecosystem project id=1.","required_cap":"data_access_admin"},{"action":"data_access.get_triggers","safe_action":"data_access_get_triggers","summary":"Read FAP v1.2 ``field_triggers`` for a project (same JSON as ``field_access_policy.field_triggers``). Keyed by resource → pattern → list of trigger definitions. See FIELD_ACCESS_POLICY.md — Field Trig"},{"action":"data_access.set_triggers","safe_action":"data_access_set_triggers","summary":"Upsert ``field_triggers`` for one resource. **triggers** is a map ``field_pattern → [trigger_def, …]`` (patterns like ``status``, ``config.**``, ``*``).","required_cap":"data_access_admin"}],"ai_builder":[{"action":"ai_builder.manifest.get","safe_action":"ai_builder_manifest_get","summary":"Load Unified Application Manifest (UAM v1) for the current project."},{"action":"ai_builder.manifest.validate","safe_action":"ai_builder_manifest_validate","summary":"Validate a UAM v1 JSON object (structure + catalog + logic templates)."},{"action":"ai_builder.compose.preview","safe_action":"ai_builder_compose_preview","summary":"Deterministic compose preview: returns content_sha256 and file paths."}],"storage":[{"action":"storage.get_quota","safe_action":"storage_get_quota","summary":"Returns storage quota for the current user or project slice: used/limit bytes, tier_basis (project_owner vs fallback), owner_user_id. Pass project_id or rely on API key / session project. scope=user ("},{"action":"storage.get_project_usage_summary","safe_action":"storage_get_project_usage_summary","summary":"Owner/admin: total permanent/temp bytes across all members and project slice, plus project_pool_limit_bytes from the owner's subscription tier."},{"action":"storage.list_files","safe_action":"storage_list_files","summary":"Lists files in an ecosystem storage folder for the current user or project slice. Pass folder key (use '_' for root) or omit to list all folders (heavy). Set include_folders=1 to return folder_index f"},{"action":"storage.delete_file","safe_action":"storage_delete_file","summary":"Deletes a file from ecosystem storage (JSON registry + blob). Requires write access for user scope; owner/admin for project scope."}],"notifications":[{"action":"notifications.subscribe_push","safe_action":"notifications_subscribe_push","summary":"Returns VAPID status; browser must still call PushManager.subscribe."},{"action":"notifications.send_push","safe_action":"notifications_send_push","summary":"Enqueue OS web push for a user (self or admin)."},{"action":"notifications.cancel_push","safe_action":"notifications_cancel_push","summary":"Cancel pending push items by correlation key prefix."},{"action":"notifications.list_prefs","safe_action":"notifications_list_prefs","summary":"Messenger + web push preference snapshot (minimal)."},{"action":"notifications.update_prefs","safe_action":"notifications_update_prefs","summary":"Patch messenger prefs (subset allowed by MessengerPrefsPatch)."},{"action":"notifications.register_category","safe_action":"notifications_register_category","summary":"Register a logical push category in user messenger prefs (persisted)."}],"web_push":[{"action":"web_push.get_health","safe_action":"web_push_get_health","summary":"Per-user Web Push health (same payload as GET /api/push/health): VAPID, canDeliver, subscription/outbox counts, process-local worker stats."}],"social":[{"action":"social.chat.index_get","safe_action":"social_chat_index_get","summary":"Get the current user's messenger sidebar index — list of channels with pinned/order metadata."},{"action":"social.chat.index_put","safe_action":"social_chat_index_put","summary":"Merge chat index entries into the user's sidebar index (no If-Match; use social flows for removal)."},{"action":"social.chat.history","safe_action":"social_chat_history","summary":"Read chat history from a messenger channel (AI-accessible)."},{"action":"social.chat.post","safe_action":"social_chat_post","summary":"Send a chat message to a messenger channel as the AI agent (authenticated user)."},{"action":"social.chat.pin","safe_action":"social_chat_pin","summary":"Pin a message in a channel."},{"action":"social.chat.unpin","safe_action":"social_chat_unpin","summary":"Unpin a message in a channel."},{"action":"social.chat.message_edit","safe_action":"social_chat_message_edit","summary":"Edit own chat message (author only)."},{"action":"social.chat.message_delete","safe_action":"social_chat_message_delete","summary":"Delete a chat message (author or channel owner per server rules)."},{"action":"social.chat.reaction","safe_action":"social_chat_reaction","summary":"Apply one server-authoritative reaction on a message (immutable cell per user)."},{"action":"social.chat.read_set","safe_action":"social_chat_read_set","summary":"Update last-read pointer (read receipt) for a channel."},{"action":"social.chat.read_get","safe_action":"social_chat_read_get","summary":"Get last-read state for a channel for the current user."},{"action":"social.chat.presence_online","safe_action":"social_chat_presence_online","summary":"List user IDs currently online (active SSE stream-relay connection) in the home project."},{"action":"social.friends.list","safe_action":"social_friends_list","summary":"List friends for the current user."},{"action":"social.friends.user_ids","safe_action":"social_friends_user_ids","summary":"Ordered friend user id list."},{"action":"social.friends.cards","safe_action":"social_friends_cards","summary":"Public card fields for each friend."},{"action":"social.friends.cards_batch","safe_action":"social_friends_cards_batch","summary":"Friend cards for specific user ids (must be friends)."},{"action":"social.followers.list","safe_action":"social_followers_list","summary":"Users who follow the current user."},{"action":"social.privacy.get","safe_action":"social_privacy_get","summary":"Get friend/DM privacy settings."},{"action":"social.privacy.put","safe_action":"social_privacy_put","summary":"Update privacy settings (incoming_friend_requests, dm_policy)."},{"action":"social.friends.requests_in","safe_action":"social_friends_requests_in","summary":"Incoming friend requests."},{"action":"social.friends.requests_out","safe_action":"social_friends_requests_out","summary":"Outgoing friend requests."},{"action":"social.friends.request_respond","safe_action":"social_friends_request_respond","summary":"Accept/reject/subscriber/block on an incoming friend request."},{"action":"social.friends.request","safe_action":"social_friends_request","summary":"Send a friend request (optional source context for public_channel)."},{"action":"social.friends.accept","safe_action":"social_friends_accept","summary":"Accept friend request from user_id."},{"action":"social.friends.remove","safe_action":"social_friends_remove","summary":"Remove an existing friend."},{"action":"social.friends.reject","safe_action":"social_friends_reject","summary":"Reject a pending friend request."},{"action":"social.friends.cancel","safe_action":"social_friends_cancel","summary":"Cancel outgoing friend request."},{"action":"social.friends.block","safe_action":"social_friends_block","summary":"Block a user."},{"action":"social.users.public_cards","safe_action":"social_users_public_cards","summary":"Public display cards for user ids (no friendship check)."},{"action":"social.users.lookup","safe_action":"social_users_lookup","summary":"Find users by id, email, or @username (no email in response)."},{"action":"social.party_invite.mint","safe_action":"social_party_invite_mint","summary":"Mint a short-lived party invite token for a relay room."},{"action":"social.party_invite.verify","safe_action":"social_party_invite_verify","summary":"Verify party invite token (no auth required on REST; MCP still needs project context)."},{"action":"social.channel_invites.link_token","safe_action":"social_channel_invites_link_token","summary":"Create shareable link token for a channel (owner)."},{"action":"social.channel_invites.direct","safe_action":"social_channel_invites_direct","summary":"Create direct channel invite to a user (owner)."},{"action":"social.channel_invites.inbox","safe_action":"social_channel_invites_inbox","summary":"List pending channel invites for the current user."},{"action":"social.channel_invites.accept","safe_action":"social_channel_invites_accept","summary":"Accept a channel invite from inbox."},{"action":"social.channel_invites.decline","safe_action":"social_channel_invites_decline","summary":"Decline a channel invite."},{"action":"social.channel_invites.redeem","safe_action":"social_channel_invites_redeem","summary":"Redeem channel invite token."},{"action":"social.federation.add","safe_action":"social_federation_add","summary":"Add federated open-channel pointer on consumer project."},{"action":"social.federation.get","safe_action":"social_federation_get","summary":"List federation pointers for a consumer project."},{"action":"social.channels.register","safe_action":"social_channels_register","summary":"Create a new messenger channel (group chat, DM, or broadcast)."},{"action":"social.channels.update","safe_action":"social_channels_update","summary":"Update channel metadata (owner)."},{"action":"social.channels.delete","safe_action":"social_channels_delete","summary":"Delete a channel (owner) and unpublish from public index."},{"action":"social.channels.list","safe_action":"social_channels_list","summary":"List all channels in the home project."},{"action":"social.channels.get","safe_action":"social_channels_get","summary":"Get one channel if the current user may access it."},{"action":"social.entities.expand","safe_action":"social_entities_expand","summary":"Batch-resolve channel/surrogate ids to metadata (max 100 ids)."},{"action":"social.pas.public_me_get","safe_action":"social_pas_public_me_get","summary":"Read Principal Access public slice for current user on a home project."},{"action":"social.pas.public_me_put","safe_action":"social_pas_public_me_put","summary":"Replace channels/chats/groups lists in PAS public slice."},{"action":"social.public.quota_get","safe_action":"social_public_quota_get","summary":"Social public index quota for current user."},{"action":"social.public.me","safe_action":"social_public_me","summary":"Public maps from user row (ecosystem.social.public)."},{"action":"social.public.publish","safe_action":"social_public_publish","summary":"Publish a channel/chats/groups entry to public index."},{"action":"social.public.unpublish","safe_action":"social_public_unpublish","summary":"Remove a public index entry."},{"action":"social.public.index","safe_action":"social_public_index","summary":"Read a page of the public discovery index."},{"action":"social.public.reconcile","safe_action":"social_public_reconcile","summary":"Reconcile public maps (privileged role only)."},{"action":"social.merge_feed","safe_action":"social_merge_feed","summary":"Merge read of multiple channel pointers (reader must access each)."},{"action":"social.admin.chat_sweep","safe_action":"social_admin_chat_sweep","summary":"Run one chat history prune batch. Requires ecosystem owner/admin on project 1."},{"action":"social.admin.user_summary","safe_action":"social_admin_user_summary","summary":"Operator: aggregate friend/request/block counts and messenger prefs summary for a user_id."},{"action":"social.admin.chat_index_page","safe_action":"social_admin_chat_index_page","summary":"Operator: paginated messenger chat index for a user (cursor/limit)."},{"action":"social.admin.channel_search","safe_action":"social_admin_channel_search","summary":"Operator: search channel metadata on a home_project_id by substring (id/title)."},{"action":"social.admin.directory_search","safe_action":"social_admin_directory_search","summary":"Operator: unified typeahead — users (8DNA) + channels for a home_project_id."},{"action":"social.admin.messenger_policy_get","safe_action":"social_admin_messenger_policy_get","summary":"Operator: read messenger retention defaults, stored overrides, and merged effective policy."},{"action":"social.admin.messenger_policy_set","safe_action":"social_admin_messenger_policy_set","summary":"Operator: replace messenger_operator_policy on ecosystem project (tiers, temp TTL, sweep ceiling)."},{"action":"social.admin.messenger_client_cache_get","safe_action":"social_admin_messenger_client_cache_get","summary":"Operator: read messenger client cache limits (defaults, stored overrides, merged effective)."},{"action":"social.admin.messenger_client_cache_set","safe_action":"social_admin_messenger_client_cache_set","summary":"Operator: replace data.ecosystem.messenger_client_cache on ecosystem project (media/IDB/OPFS caps)."},{"action":"social.admin.public_index_status","safe_action":"social_admin_public_index_status","summary":"Operator: public index page or reconcile maps (set reconcile=true)."},{"action":"social.admin.dm_thread_meta","safe_action":"social_admin_dm_thread_meta","summary":"Operator: DM thread metadata (counts, participants) for support; audited."},{"action":"social.admin.graph_edges","safe_action":"social_admin_graph_edges","summary":"Operator: list friend and blocked edges for a user (capped)."},{"action":"social.admin.relay_hints","safe_action":"social_admin_relay_hints","summary":"Operator: static hints for stream relay room naming and diagnostics paths."},{"action":"social.admin.force_delete_message","safe_action":"social_admin_force_delete_message","summary":"Operator: delete a chat message by id from DNA ring (ecosystem owner). Use dry_run first."},{"action":"social.admin.reset_messenger_prefs","safe_action":"social_admin_reset_messenger_prefs","summary":"Operator: clear messenger_prefs for a user (reason required)."},{"action":"social.admin.revoke_federation","safe_action":"social_admin_revoke_federation","summary":"Operator: remove a federation pointer from consumer to source channel."},{"action":"social.admin.force_close_channel","safe_action":"social_admin_force_close_channel","summary":"Operator: delete channel metadata from project data_channels (ecosystem owner)."},{"action":"social.chat.delta","safe_action":"social_chat_delta","summary":"Unified incremental delta for a messenger channel — one call returns new messages,"},{"action":"social.chat.crdt_update","safe_action":"social_chat_crdt_update","summary":"Apply a Y.js CRDT update to a channel's shared document (bodies / pins / deletes)."},{"action":"social.chat.crdt_state","safe_action":"social_chat_crdt_state","summary":"Read the current CRDT snapshot + raw updates for a channel."},{"action":"social.support.history","safe_action":"social_support_history","summary":"Read project support thread for the authenticated user (channel psup_p{pid}_u{uid})."},{"action":"social.support.send","safe_action":"social_support_send","summary":"Send a message in the user's support thread for a project (user) or staff reply when permitted."},{"action":"social.support.inbox","safe_action":"social_support_inbox","summary":"Staff inbox preview list for a project (requires support access).","required_cap":"project_support"},{"action":"social.support.eligibility","safe_action":"social_support_eligibility","summary":"Batch read: for home project ids the user can access, returns whether end-user private support and/or public Messenger support lounge are enabled (channel id psup_pub_p{pid} when public).","required_cap":"project_support"},{"action":"social.support.search_projects","safe_action":"social_support_search_projects","summary":"Search projects the user may contact via support (titles ranked vs query). Returns support entry flags per row.","required_cap":"social_read"},{"action":"social.support.transition","safe_action":"social_support_transition","summary":"Staff: transition a support ticket lifecycle status (requires support desk access).","required_cap":"project_support"},{"action":"social.support.assign","safe_action":"social_support_assign","summary":"Staff: assign a support ticket to a staff user id (or unassign with null).","required_cap":"project_support"},{"action":"social.support.request_human","safe_action":"social_support_request_human","summary":"End user: request a human handoff for the current ticket (pending when allowed).","required_cap":"project_support"}],"hosting":[{"action":"hosting.site.quick_start","safe_action":"hosting_site_quick_start","summary":"Create bucket, upload HTML index, optional publish; returns public /s/{project_id}/{bucket_name}/ URL."},{"action":"hosting.files.put","safe_action":"hosting_files_put","summary":"Upload or replace a file in a hosting bucket."},{"action":"hosting.release.snapshot","safe_action":"hosting_release_snapshot","summary":"Create immutable snapshot (archive bucket copy) for a site."},{"action":"hosting.release.list","safe_action":"hosting_release_list","summary":"List site release history (newest first)."},{"action":"hosting.release.promote","safe_action":"hosting_release_promote","summary":"Promote a release snapshot to the live site bucket and publish."},{"action":"hosting.release.delete","safe_action":"hosting_release_delete","summary":"Delete an unpinned hosting release (optional bucket purge)."},{"action":"hosting.release.clone_site","safe_action":"hosting_release_clone_site","summary":"Clone a new site from a release snapshot."},{"action":"hosting.storage.import_folder","safe_action":"hosting_storage_import_folder","summary":"Import a project storage folder into a hosting bucket."},{"action":"hosting.site.edge_health","safe_action":"hosting_site_edge_health","summary":"Check nginx edge readiness (symlinks, index.html) for a hosting bucket."}],"agents":[{"action":"agents.list","safe_action":"agents_list","summary":"List Agents Fleet rows for a project (8DNA entity_type=agent).","required_cap":"agents_run"},{"action":"agents.get","safe_action":"agents_get","summary":"Get a single agent by UUID (default owner=project; personal rows need owner=user).","required_cap":"agents_run"},{"action":"agents.create","safe_action":"agents_create","summary":"Create a new agent row (draft AgentSpec).","required_cap":"agents_admin"},{"action":"agents.update","safe_action":"agents_update","summary":"Replace AgentSpec for an agent (full document).","required_cap":"agents_admin"},{"action":"agents.delete","safe_action":"agents_delete","summary":"Delete an agent row.","required_cap":"agents_admin"},{"action":"agents.run","safe_action":"agents_run","summary":"Enqueue an agent run (durable work queue).","required_cap":"agents_run"},{"action":"agents.run_with_agnt_credits","safe_action":"agents_run_with_agnt_credits","summary":"Demo orchestration: purchase compute credits (AGC) then enqueue an agent run.","required_cap":"agents_run"},{"action":"agents.fork","safe_action":"agents_fork","summary":"Fork an agent to a new generation (DNA row).","required_cap":"agents_admin"},{"action":"agents.stop","safe_action":"agents_stop","summary":"Cancel a running / queued agent run.","required_cap":"agents_run"},{"action":"agents.kill","safe_action":"agents_kill","summary":"Set agent lifecycle state to killed (hard stop for new runs).","required_cap":"agents_admin"},{"action":"agents.promote","safe_action":"agents_promote","summary":"Run auto-promotion gates; may set state to live when metrics pass.","required_cap":"agents_admin"},{"action":"agents.rollout_advance","safe_action":"agents_rollout_advance","summary":"Advance canary rollout step (5→20→50→100).","required_cap":"agents_admin"},{"action":"agents.metrics","safe_action":"agents_metrics","summary":"Read rollup metrics for an agent (ecosystem.agents_metrics).","required_cap":"agents_run"},{"action":"agents.gates","safe_action":"agents_gates","summary":"Evaluate promotion gates for an agent.","required_cap":"agents_run"},{"action":"agents.traces","safe_action":"agents_traces","summary":"Return stored run events (trace buffer) for a run.","required_cap":"agents_run"},{"action":"agents.timeline","safe_action":"agents_timeline","summary":"List recent runs for an agent (uuid + status + timestamps).","required_cap":"agents_run"},{"action":"agents.approve_run","safe_action":"agents_approve_run","summary":"Approve a run stuck in waiting_for_approval and resume execution.","required_cap":"agents_run"},{"action":"agents.policy_preview","safe_action":"agents_policy_preview","summary":"Expand AgentPolicy patterns to live MCP actions (preview, no persistence)."},{"action":"agents.templates_list","safe_action":"agents_templates_list","summary":"List built-in Agent Fleet templates (canonical Python catalog)."},{"action":"agents.template_preview","safe_action":"agents_template_preview","summary":"Return merged AgentSpec-shaped preview for a template (no persistence)."},{"action":"agents.create_from_template","safe_action":"agents_create_from_template","summary":"Create an agent row from a built-in template (atomic merge on server)."}],"integrations":[{"action":"integrations.list_recipes","safe_action":"integrations_list_recipes","summary":"List integration recipe templates (Stripe, GitHub, Telegram, etc.)."},{"action":"integrations.install_recipe","safe_action":"integrations_install_recipe","summary":"Install a recipe: creates connection + declarative logic rule."},{"action":"integrations.list_connections","safe_action":"integrations_list_connections","summary":"List integration connections for project or personal (ecosystem user) scope."},{"action":"integrations.test_hook","safe_action":"integrations_test_hook","summary":"Dry-run inbound hook verify + normalize (sync dispatch to logic)."},{"action":"integrations.export_connection","safe_action":"integrations_export_connection","summary":"Export connection public spec + config (secrets redacted)."},{"action":"integrations.import_connection","safe_action":"integrations_import_connection","summary":"Import connection from export JSON (optionally with secrets)."},{"action":"integrations.rotate_secret","safe_action":"integrations_rotate_secret","summary":"Rotate a protected secret key for a connection."},{"action":"integrations.replay_delivery","safe_action":"integrations_replay_delivery","summary":"Replay outbound delivery by durable delivery_id (execution log)."},{"action":"integrations.replay_delivery_url","safe_action":"integrations_replay_delivery_url","summary":"Replay outbound POST to an explicit target_url (same as REST deliveries/replay query)."},{"action":"integrations.connection_health","safe_action":"integrations_connection_health","summary":"Read connection health snapshot (public spec only)."},{"action":"integrations.connector_schema","safe_action":"integrations_connector_schema","summary":"Provider setup schema metadata for wizard/agents."},{"action":"integrations.process_inbox_batch","safe_action":"integrations_process_inbox_batch","summary":"Process durable inbound integration inbox (worker-style batch)."},{"action":"integrations.process_outbound_batch","safe_action":"integrations_process_outbound_batch","summary":"Process outbound webhook delivery work queue (webhooks.outbound batch)."},{"action":"integrations.list_inbox_events","safe_action":"integrations_list_inbox_events","summary":"List durable integration inbox audit rows for a project."},{"action":"integrations.generate_signing_secret","safe_action":"integrations_generate_signing_secret","summary":"Rotate signing_secret server-side without reading the old value."},{"action":"integrations.export_connection_manifest","safe_action":"integrations_export_connection_manifest","summary":"Export project integration connections as JSON manifest for agent tool loops."},{"action":"integrations.import_zapier_preview","safe_action":"integrations_import_zapier_preview","summary":"Dry-run preview: map Zapier export JSON to recipe + logic block draft."},{"action":"integrations.import_make_preview","safe_action":"integrations_import_make_preview","summary":"Dry-run preview: map Make scenario JSON to recipe + logic block draft."},{"action":"integrations.poll_connection","safe_action":"integrations_poll_connection","summary":"Run connector polling for a connection (cursor watermark in config.poll_state)."}],"cardgame":[{"action":"cardgame.dna.read_rows","safe_action":"cardgame_dna_read_rows","summary":"List up to ``limit`` rows for a cardgame 8DNA entity type using DNA CRUD get (same permission model as the SPA). Use for match room / cell snapshots when building agent context."},{"action":"cardgame.rules.execute","safe_action":"cardgame_rules_execute","summary":"Execute a Logic Engine command for ArcaneStack (e.g. ``cardgame.match.play_card``) with the same payload shape as the game client. Requires authenticated MCP context."}],"rag":[{"action":"rag.collection_create","safe_action":"rag_collection_create","summary":"Create a new RAG knowledge base collection for the current project."},{"action":"rag.collection_list","safe_action":"rag_collection_list","summary":"List all RAG collections for the current project."},{"action":"rag.collection_delete","safe_action":"rag_collection_delete","summary":"Delete a RAG collection and all its documents. This is irreversible."},{"action":"rag.document_add","safe_action":"rag_document_add","summary":"Add a text document to a RAG collection."},{"action":"rag.document_list","safe_action":"rag_document_list","summary":"List document chunks stored in a collection."},{"action":"rag.document_delete","safe_action":"rag_document_delete","summary":"Remove a document (all its chunks) from a collection by source_doc_id."},{"action":"rag.search","safe_action":"rag_search","summary":"Semantic search over a RAG collection."},{"action":"rag.memory_add","safe_action":"rag_memory_add","summary":"Store a conversation turn in AI memory."},{"action":"rag.memory_get","safe_action":"rag_memory_get","summary":"Get the most recent conversation turns from memory (chronological order)."},{"action":"rag.memory_search","safe_action":"rag_memory_search","summary":"Semantically search past conversation turns."}],"generation":[{"action":"generation.list","safe_action":"generation_list","summary":"List sandbox environment anchors for a project (names, status, CalVer, auto_created flags)."},{"action":"generation.diff","safe_action":"generation_diff","summary":"Structured diff between two resolved generation entity states (same table/project)."},{"action":"generation.promote","safe_action":"generation_promote","summary":"Promote a sandbox environment to production (runs promotion checks first)."},{"action":"generation.approve","safe_action":"generation_approve","summary":"Mark manual generation approval on anchor and re-run gate evaluation."},{"action":"generation.gates","safe_action":"generation_gates","summary":"Run generation gate chain for an environment (schema, conflict, health, soak, metrics, optional manual)."},{"action":"generation.timeline","safe_action":"generation_timeline","summary":"Recent completed promotion requests for a project (newest first)."}],"buffs":[{"action":"buffs.create_buff","safe_action":"buffs_create_buff","summary":"Create a buff template in PENDING state."},{"action":"buffs.apply_buff","safe_action":"buffs_apply_buff","summary":"Apply a buff to an entity (user or project)."},{"action":"buffs.extend_buff","safe_action":"buffs_extend_buff","summary":"Extend the duration of an active buff."},{"action":"buffs.revert_buff","safe_action":"buffs_revert_buff","summary":"Revert an active buff - restore original state from snapshot."},{"action":"buffs.cancel_buff","safe_action":"buffs_cancel_buff","summary":"Cancel a buff in any state (force cancellation)."},{"action":"buffs.get_buff","safe_action":"buffs_get_buff","summary":"Get information about a specific buff."},{"action":"buffs.list_active_buffs","safe_action":"buffs_list_active_buffs","summary":"List active buffs for an entity."},{"action":"buffs.get_effective_limits","safe_action":"buffs_get_effective_limits","summary":"Get effective limits for an entity with all buffs applied."},{"action":"buffs.apply_temporary_effect","safe_action":"buffs_apply_temporary_effect","summary":"Quickly apply a temporary effect (creates and applies buff in one step)."},{"action":"buffs.apply_persistent_effect","safe_action":"buffs_apply_persistent_effect","summary":"Quickly apply a persistent effect (creates and applies permanent buff)."}],"commerce_rest":[{"action":"rest.marketplace.create_listing","safe_action":"rest_marketplace_create_listing","summary":"Create listing (types: sale, buy, exchange, auction). Not an MCP action."},{"action":"rest.marketplace.list_listings","safe_action":"rest_marketplace_list_listings","summary":"List marketplace listings with filters."},{"action":"rest.marketplace.place_bid","safe_action":"rest_marketplace_place_bid","summary":"Place bid on auction listing."},{"action":"rest.marketplace.accept_listing","safe_action":"rest_marketplace_accept_listing","summary":"Accept deal / settle listing (may trigger internal payment flow)."},{"action":"rest.marketplace.close_auction","safe_action":"rest_marketplace_close_auction","summary":"Close auction listing."},{"action":"rest.exchange.quote","safe_action":"rest_exchange_quote","summary":"Cross-project exchange quote (not protein command_type exchange)."},{"action":"rest.exchange.execute","safe_action":"rest_exchange_execute","summary":"Execute cross-project currency/asset exchange."}]}}