Supported languages: Python.
- Stateful workflows with persistent memory
- Graph-based execution with conditional branching
- Multi-step processes with human-in-the-loop
- Dynamic tool loading based on connected accounts
Calling actions
1
Install
2
Fetch Tools
Fetch StackOne tools for the linked account and convert them to LangChain format (LangGraph uses LangChain tools). By default this fetches every tool enabled for the account — narrow it by passing
providers or actions filters (see Tool Filtering):3
Run the agent loop
Create a LangGraph agent with the tools and run a stateful workflow:
Stateful workflows
Build complex, multi-step workflows with state:Human-in-the-loop
Add human approval for sensitive operations:Best practices
Account ID from context
Multi-account usage
Each tool execution runs against a specific customer account. Set account IDs once on the toolset, or pass them per request.Error handling
Error handling
File downloads (binary responses)
File downloads (binary responses)
Actions that download a file (for example The returned dict, from both
googledrive_unified_download_file, documents_download_file, or any *_unified_download_file) return raw bytes plus metadata, not parsed JSON. The SDK decides from the response Content-Type: JSON is parsed as usual, and anything else is treated as a file download.call() and execute() both return the dict directly (it isn’t wrapped in a result object), so read its values with dict keys like result["content"].call() and execute():Troubleshooting
Execute a tool
Direct execution is useful for testing and debugging. In production, your agent framework handles tool calls automatically.Next steps
Observability
Diagnose failing calls and monitor what your agent runs.
Tool Defense
Protect your agent from malicious content in tool results.