Google’s Deep Research documentation describes the integration path clearly: send a request with background=True, receive an interaction ID, poll until completion, then extract the report from the steps[] array. For developers building standalone scripts, this is straightforward.
For developers using multi-agent frameworks like CrewAI, it’s not. CrewAI’s tool execution model is synchronous. The Interactions API is async. There is no built-in way to bridge the two, and the recently announced Breaking Change from outputs[] to steps[] adds another layer of complexity.
I built a native CrewAI BaseTool that handles the full lifecycle inside the standard _run() method: initiates the research with background=True, polls with a configurable interval, enforces a hard timeout (default 30 minutes), extracts the report from the new steps[] array with a fallback to the legacy outputs[] format, and caps API calls per task via max_usage_count to prevent cost overruns.
The tool also keeps the Gemini API key cleanly separated from Vertex AI ADC credentials, which solves a specific conflict when the same pipeline uses both Vertex AI for LLM reasoning and Google AI Studio for Deep Research.
One file, one import, works in any existing CrewAI pipeline.
I’m sharing this because the Deep Research documentation encourages community tooling and feedback. I hope this is useful for other developers building agentic pipelines with the Interactions API.
Open for feedback from the community and the Google team.