I'm currently developing an AI Agent workflow in callin.io to fetch tasks from a Notion database, filtered by project. The agent should enable users to ask questions like:
“What are the open tasks for the project ‘Webseiten’?”
The objective is for the AI to interpret this input, identify the project name (“Webseiten”), retrieve the corresponding Notion page ID (using a custom tool named Get Project Page ID), and then use that ID to search for tasks within the Tasks DB (via a tool called Search inside Task DB).
All tools are correctly linked, and the agent has access to the necessary memory, tools, and output parser. The logic within the system prompt is clearly defined and functions correctly when tested manually. Here's the structure within the prompt:
- Detect project names and obtain the project ID using the Get Project Page ID tool.
- Pass the obtained ID to the Search inside Task DB tool, along with a “done” status and optional deadline filters.
- Output a structured list of tasks including titles, deadlines, project associations, and other details.
Despite this logic working conceptually, I'm encountering a critical issue:
Problem
The AI Agent fails to pass any data to the Get Project Page ID tool.
Although the user input clearly specifies the project name (“Webseiten”), the tool receives an empty input object ({}
), and the internal expression {{ $json.project }}
resolves to undefined
. Consequently, the Project ID cannot be resolved, and all subsequent tools fail due to missing required filters (e.g., project_id
).
My HTTP request body for getting the project page ID:
json
{
“filter”: {
“property”: “Projektname”,
“rich_text”: {
“contains”: “{{ $json.project }}”
}
}
}
What I expect
I anticipate the AI Agent to:
- Correctly parse the user's message.
- Extract the project name (“Webseiten”).
- Utilize the Get Project Page ID tool and provide
{ "project": "Webseiten" }
as input. - Receive the correct page ID.
- Pass this ID into Search inside Task DB with the appropriate filter.
However, step 3 does not occur because the input is completely missing, even though it's clearly required by the system prompt and present in the user's input.
My questions
- Is this a bug or a known limitation in how tools are invoked and populated by the AI Agent node?
- Do I need to use specific variable names or mappings to ensure the input is passed correctly?
- Do I need to pre-declare the variable (e.g.,
project
) elsewhere in the workflow?
Any community insights would be greatly appreciated, as this appears to be a blocker for enabling more robust, AI-driven workflows with tool chaining.
Information on my callin.io setup
- callin.io version: 1.44.1 (callin.io Cloud)
- Database: Default (SQLite)
- Execution Mode: own
- Running via: callin.io Cloud
- Operating System: macOS (development), cloud-hosted (execution)
it is working that it shows me the open tasks of the database:
but the issue is that the filter for the search is not being applied, and the input for “get project page id” is empty.
Could someone please provide insights into this issue?
Thank you for your assistance! This clarifies things significantly.
However, I've encountered another issue.
When I attempt to filter by two criteria, specifically the customer page ID and project page ID, it fails when only one filter is active. An error occurs, indicating it expects two filter inputs.
It functions correctly only when the initial message provides both the Customer and Project details.
Is there a workaround to enable it to function with just one filter or no filters applied?
Here is my workflow:
My filters:
When only one input is provided (an error appears):
Your explanation did not mention the customer page, so I did not anticipate it being part of the process. Only projects and tasks were included.
The approach to constructing a dynamic filter that accommodates zero or one filter would involve either instructing an AI agent to generate JSON filters from natural language by detailing operations, format, and combination methods, OR retrieving all records and explaining the filtering logic to the AI agent in natural language, as demonstrated in my example. The former is more robust but requires a thorough explanation of the filtering logic, while the latter is simpler to implement but necessitates sending more text (more tokens) to the model. The choice between these methods is yours.
Hope this helps.
Since you've opened a separate topic for this question, please mark any helpful answers as the solution in this thread. Thank you.
Best regards.