{"version":"2.0","entrypoint":"agentstack.execute","total_actions":94,"domains":{"commands":[{"action":"commands.execute","summary":"Execute a single Protein Command via universal API."},{"action":"commands.execute_batch","summary":"Execute multiple Protein Commands in batch."}],"projects":[{"action":"projects.get_projects","summary":"Get list of projects for the current user."},{"action":"projects.get_project","summary":"Get detailed information about a specific project."},{"action":"projects.create_project","summary":"Create a new project."},{"action":"projects.create_project_anonymous","summary":"Create a new anonymous project (for AI agents)."},{"action":"projects.update_project","summary":"Update an existing project."},{"action":"projects.delete_project","summary":"Delete a project."},{"action":"projects.get_stats","summary":"Get project statistics."},{"action":"projects.get_users","summary":"Get list of users in a project."},{"action":"projects.add_user","summary":"Add a user to a project (requires Professional subscription or ecosystem context and manage_users/owner)."},{"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)."},{"action":"projects.remove_user","summary":"Remove a user from a project (requires Professional subscription or ecosystem context)."}],"rbac":[{"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","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","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","summary":"Check if a user has a permission in a project. If user_id is omitted, checks current user."}],"processors":[{"action":"processors.list","summary":"List all available processors with their metadata."},{"action":"processors.get_metadata","summary":"Get detailed metadata for a specific processor."},{"action":"processors.execute","summary":"Execute a processor directly."}],"logic":[{"action":"logic.create","summary":"Create new Logic Engine rule for project."},{"action":"logic.update","summary":"Update existing Logic Engine rule."},{"action":"logic.delete","summary":"Delete a Logic Engine rule."},{"action":"logic.get","summary":"Get detailed information about a Logic Engine rule."},{"action":"logic.list","summary":"List all Logic Engine rules for project."},{"action":"logic.execute","summary":"Execute a Logic Engine rule immediately."},{"action":"logic.get_processors","summary":"Get list of available processors (same as processors.list but in logic context)."},{"action":"logic.get_commands","summary":"Get list of available commands for triggers."},{"action":"logic.flush_batch","summary":"Force flush logic batch for a project (saves all accumulated rules immediately)"}],"auth":[{"action":"auth.login","summary":"Login to the system."},{"action":"auth.register","summary":"Register a new user."},{"action":"auth.get_profile","summary":"Get user profile information."},{"action":"auth.update_profile","summary":"Update user profile."}],"payments":[{"action":"payments.create","summary":"Create a new payment transaction."},{"action":"payments.get","summary":"Get detailed payment information by payment ID."},{"action":"payments.list_transactions","summary":"List all payment transactions for a project."},{"action":"payments.get_balance","summary":"Get current wallet balance for a project."},{"action":"payments.refund","summary":"Refund a completed payment."}],"wallets":[{"action":"wallets.list","summary":"List wallets for a project (and optionally user)."},{"action":"wallets.create","summary":"Create a wallet for a project or user."},{"action":"wallets.deposit","summary":"Deposit funds to a wallet."},{"action":"wallets.transfer","summary":"Transfer funds between wallets (same project)."}],"scheduler":[{"action":"scheduler.create_task","summary":"Create a new scheduled task for automated execution."},{"action":"scheduler.get_task","summary":"Get detailed information about a scheduled task by ID."},{"action":"scheduler.update_task","summary":"Update an existing scheduler task (requires write permission)."},{"action":"scheduler.list_tasks","summary":"List all scheduled tasks for a project."},{"action":"scheduler.execute_task","summary":"Execute a scheduled task immediately, bypassing the cron schedule."},{"action":"scheduler.get_pool_tasks","summary":"Get all tasks from the execution pool (in-memory task queue)."},{"action":"scheduler.get_pool_task_details","summary":"Get detailed information about a specific task from the execution pool."},{"action":"scheduler.delete_pool_task","summary":"Remove a specific task from the execution pool (does not delete from database)."},{"action":"scheduler.clear_pool_tasks","summary":"Clear all tasks from the execution pool (does not delete from database)."},{"action":"scheduler.refresh_pool","summary":"Force a refresh of the scheduler pool from the database."},{"action":"scheduler.get_all_db_tasks","summary":"Get all scheduler and standalone tasks from the database (heavy operation)."},{"action":"scheduler.cancel_task","summary":"Cancel/remove a scheduler task (removes from pool and disables in database)."}],"apikeys":[{"action":"apikeys.create","summary":"Create a new API key for project access."},{"action":"apikeys.list","summary":"List all API keys for a project."},{"action":"apikeys.delete","summary":"Delete an API key permanently."}],"analytics":[{"action":"analytics.get_usage","summary":"Get project usage statistics and activity data."},{"action":"analytics.get_metrics","summary":"Get project performance metrics and analytics data."}],"system":[{"action":"system.ping","summary":"Health check tool — always succeeds, no authentication required."}],"assets":[{"action":"assets.create","summary":"Create a new asset for the project."},{"action":"assets.get","summary":"Get asset details by ID."},{"action":"assets.list","summary":"List all assets in the project."},{"action":"assets.update","summary":"Update an existing asset."},{"action":"assets.delete","summary":"Delete an asset from the project."}],"data_access":[{"action":"data_access.set_policy","summary":"Create or update the field-level access policy for a project resource."},{"action":"data_access.get_policy","summary":"Retrieve the current field-level access policy for a project."},{"action":"data_access.check_field","summary":"Check whether a specific role can read/write a field in a resource."},{"action":"data_access.test_mask","summary":"Preview what fields a given role can read/write in a resource."},{"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","summary":"Write the global FAP template on ecosystem project (admin tooling)."},{"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."},{"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","summary":"Upsert ``field_triggers`` for one resource. **triggers** is a map ``field_pattern → [trigger_def, …]`` (patterns like ``status``, ``config.**``, ``*``)."}],"rag":[{"action":"rag.collection_create","summary":"Create a new RAG knowledge base collection for the current project."},{"action":"rag.collection_list","summary":"List all RAG collections for the current project."},{"action":"rag.collection_delete","summary":"Delete a RAG collection and all its documents. This is irreversible."},{"action":"rag.document_add","summary":"Add a text document to a RAG collection."},{"action":"rag.document_list","summary":"List document chunks stored in a collection."},{"action":"rag.document_delete","summary":"Remove a document (all its chunks) from a collection by source_doc_id."},{"action":"rag.search","summary":"Semantic search over a RAG collection."},{"action":"rag.memory_add","summary":"Store a conversation turn in AI memory."},{"action":"rag.memory_get","summary":"Get the most recent conversation turns from memory (chronological order)."},{"action":"rag.memory_search","summary":"Semantically search past conversation turns."}],"buffs":[{"action":"buffs.create_buff","summary":"Create a buff template in PENDING state."},{"action":"buffs.apply_buff","summary":"Apply a buff to an entity (user or project)."},{"action":"buffs.extend_buff","summary":"Extend the duration of an active buff."},{"action":"buffs.revert_buff","summary":"Revert an active buff - restore original state from snapshot."},{"action":"buffs.cancel_buff","summary":"Cancel a buff in any state (force cancellation)."},{"action":"buffs.get_buff","summary":"Get information about a specific buff."},{"action":"buffs.list_active_buffs","summary":"List active buffs for an entity."},{"action":"buffs.get_effective_limits","summary":"Get effective limits for an entity with all buffs applied."},{"action":"buffs.apply_temporary_effect","summary":"Quickly apply a temporary effect (creates and applies buff in one step)."},{"action":"buffs.apply_persistent_effect","summary":"Quickly apply a persistent effect (creates and applies permanent buff)."}]}}