Upgrade to 0.24.0
Move MCP list and search filters into query, rename get_email_body format to bodyFormat, and send only declared tool arguments.
Fluxmail 0.24.0 changes the arguments of several MCP tools. The list and search tools take their filters in a typed query, get_email_body renames one argument, and every tool rejects arguments its input schema doesn't declare. Calls that worked with 0.23.0 can now return an invalid_request tool error.
Find your migration
| Interface | Required changes |
|---|---|
| MCP over HTTP or stdio | Write list and search filters into query. Send bodyFormat instead of format to get_email_body. Send only the arguments in each tool's input schema, and read invalid-argument errors as invalid_request tool errors. |
| CLI | No client migration. |
| REST | No client migration. |
Agents that read tool schemas from tools/list pick up the new arguments when they reconnect. Update prompts, saved tool calls, scripts and custom clients that name the removed arguments.
Move filters into query
list_emails, search_emails and search_emails_batch no longer take text, from, to, subject, read, starred, hasAttachment, after or before. Write each filter into query using the typed search syntax:
| 0.23.0 argument | 0.24.0 query term |
|---|---|
"text": "quarterly report" | quarterly report |
"from": "ann@example.com" | from:ann@example.com |
"to": "ben@example.com" | to:ben@example.com |
"subject": "Team offsite" | subject:"Team offsite" |
"read": true or false | is:read or is:unread |
"starred": true or false | is:starred or is:unstarred |
"hasAttachment": true or false | has:attachment or -has:attachment |
"after": "2026-11-01" | after:2026-11-01 |
"before": "2026-12-01" | before:2026-12-01 |
Separate terms with spaces. Fluxmail combines them with AND. For example, this 0.23.0 call:
{ "from": "ann@example.com", "read": false, "after": "2026-11-01", "text": "invoice" }becomes:
{ "query": "from:ann@example.com is:unread after:2026-11-01 invoice" }Plain words in query become the same search text that text used. The old text argument was always literal, but in query a word such as from:x is read as a filter. Put double quotes around search text that looks like a filter, and around any filter value that contains spaces, such as a subject.
folder, rawProviderQuery, pageSize, pageToken, includeSnippet and includeSearchContext are unchanged. Search words in query can't be combined with rawProviderQuery. Put them in the native query instead.
search_emails and search_emails_batch are now other names for list_emails and the new list_emails_batch. Both names take the same arguments and return the same results, and query is optional on both. You can keep calling the search_ names.
Rename the get_email_body argument
get_email_body takes bodyFormat instead of format, the same name get_email and get_thread use. The values are still text and html. Change "format": "text" to "bodyFormat": "text".
Send only declared arguments
Fluxmail 0.23.0 ignored arguments a tool didn't declare. A misspelled filter was dropped, and the call returned unfiltered mail. Fluxmail 0.24.0 rejects them before it reads or changes any mail. That includes arguments removed in this release, such as from on list_emails. This also applies inside nested objects, such as draft attachments and the accounts entries of the batch tools. list_accounts and get_status take no arguments and still ignore any they receive.
Invalid arguments of every kind, including unknown names, wrong types and missing required values, now return a tool result with isError: true whose JSON payload has "error": "invalid_request". Its message lists unknown arguments first, then the other problems:
Invalid arguments for get_email: unknown argument "messageID"; messageId: Invalid input: expected string, received undefined. Check the tool's input schema.Previously, wrong types and missing values returned the MCP SDK's Input validation error text. If a custom client matched that text, check the payload's error field instead.
Last updated