tinyhumansai/openhuman · error

invalid arguments for whatsapp_data_list_chats: {e}

Error message

invalid arguments for whatsapp_data_list_chats: {e}

What it means

The whatsapp_data_list_chats tool arguments failed to deserialize into ListChatsRequest: a required field missing or limit/offset of the wrong JSON type. Serde's error is wrapped with the tool-name prefix; fires before any native bus request is made.

Source

Thrown at src/openhuman/channels/whatsapp_data/tools/list_chats.rs:57

                "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "Maximum chats to return (default 50)."
                },
                "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Pagination offset (default 0)."
                }
            }
        })
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        log::debug!("[tool][whatsapp_data] list_chats invoked");
        let req: ListChatsRequest = serde_json::from_value(args).map_err(|e| {
            log::debug!("[tool][whatsapp_data] list_chats invalid_args error={e}");
            anyhow::anyhow!("invalid arguments for whatsapp_data_list_chats: {e}")
        })?;
        log::debug!(
            "[tool][whatsapp_data] list_chats args has_account={} limit={:?} offset={:?}",
            req.account_id.is_some(),
            req.limit,
            req.offset,
        );
        let chats: Vec<WhatsAppChat> = match BUS.native().request(methods::LIST_CHATS, req).await {
            Ok(chats) => chats,
            Err(e) if is_handler_absent(&e) => {
                // Headless / CLI / docker: no desktop shell handler is
                // registered. Degrade gracefully to an empty result.
                log::debug!("[tool][whatsapp_data] list_chats handler_absent — degrading ({e})");
                let body = serde_json::to_string(&json!({
                    "provider": "whatsapp",
                    "count": 0,
                    "chats": [],
                    "note": UNAVAILABLE_NOTE,

View on GitHub (pinned to 7491200858)

Solutions

  1. Pass limit as an integer >= 1 and offset as an integer >= 0
  2. Check the serde message for the exact offending field
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/channels/whatsapp_data/tools/list_chats.rs:57 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/0c7f554e85a89687. Report an issue: GitHub.