Skip to content
Troubleshooting AI ...
 
Notifications
Clear all

Troubleshooting AI Tool Input for Google Sheets Append Row: "Received tool input did not match expected schema"

2 Posts
1 Users
0 Reactions
7 Views
nocodedude
(@nocodedude)
Posts: 2
New Member
Topic starter
 

I'm developing a workflow with callin.io Cloud (v1.89.2) and encountering an error when attempting to add a new row to Google Sheets through an AI tool call:

Received tool input did not match expected schema

The step that's failing is an Append Row action, utilizing the create_new_order tool connected to Google Sheets.


:brain: Context:

The system prompt section (tool definition) is configured as follows:

{
  "name": "create_new_order",
  "description": "Registers a new order in the 'Orders' sheet. If pairs_no ≥ 4, free pickup is activated.",
  "parameters": {
    "type": "object",
    "properties": {
      "Status": {
        "type": "string",
        "description": "Initial order status, default is Received"
      },
      "user_id": {
        "type": "string",
        "description": "Unique user identifier",
        "memory": "user_id"
      },
      "user_name": {
        "type": "string",
        "description": "Customer's full name",
        "memory": "name"
      },
      "address": {
        "type": "string",
        "description": "Pickup/delivery address",
        "memory": "address"
      },
      "zip": {
        "type": "string",
        "description": "Postal code",
        "memory": "zip"
      },
      "phone": {
        "type": "string",
        "description": "Customer's phone number",
        "memory": "phone"
      },
      "pairs_no": {
        "type": "string",
        "description": "Total number of shoe pairs",
        "memory": "num_pairs"
      },
      "unit_price": {
        "type": "string",
        "description": "Price per pair of shoes",
        "memory": "price"
      },
      "total_price": {
        "type": "string",
        "description": "Total order price (pairs_no * unit_price)",
        "memory": "price"
      }
    },
    "required": ["Status","user_id","user_name","address","zip","phone","pairs_no","unit_price","total_price"]
  }
}

:camera_flash: Google Sheets step setup:

The create_new_order step is set up as follows (Mapping Column Mode: manual):

Values to Send:

  • status {{ $fromAI("status") }}
  • userid {{ $fromAI("userid") }}
  • username {{ $fromAI("username") }}
  • address {{ $fromAI("address") }}
  • zip {{ $fromAI("zip") }}
  • phone {{ $fromAI("phone") }}
  • pairsno {{ $fromAI("pairsno") }}
  • unitprice {{ $fromAI("unitprice") }}
  • totalprice {{ $fromAI("totalprice") }}

:mag: What I’ve tried:

  • Verified that all parameter names align with the schema.
  • All values are being passed using fromAI(), for example: {{ $fromAI("status") }}.
  • Attempted to hardcode a single value, but the result remained the same.
  • Experimented by changing Status to status (lowercase) in both the schema and the user interface, but the issue persists.

:brain: Running:

callin.io Cloud
Version: 1.89.2
AI Step Version: v4.1 mini

:bulb: Question:

What could be causing this tool input schema mismatch? Any guidance or suggestions would be greatly appreciated.

:pray:

 
Posted : 25/04/2025 9:58 am
nocodedude
(@nocodedude)
Posts: 2
New Member
Topic starter
 

Solved!

It turned out the schema mismatch was simply due to my own inconsistency.

:see_no_evil:

I went through every instance where the fields were used (system-prompt tool definition, AI mapping expressions, and Google Sheets column names) and ensured that the names and data-types were identical across the board:

  • All keys are in lower-case → status, userid, pairsno, …
  • Numbers are correctly defined as “type”: “number” (not “string”)
  • Booleans are set as “boolean”
  • The Google Sheets node now maps the exact same names.

After this minor cleanup, the Append Row step began running without the “Received tool input did not match expected schema” error. I'm sharing this in case someone else encounters a similar issue—just double-check your field names and types in every module, and you should be all set.

:muscle:

 
Posted : 25/04/2025 1:24 pm
Share: