MCP retries, limits, and audit controls hardened
Released: September 20, 2026
MCP server Changed
Section titled “MCP server ”Every mutating MCP tool now accepts an optional idempotency_key.
Reuse the same key and identical arguments when retrying after a timeout;
Kirimdev replays the first successful result for 24 hours instead of
executing the mutation twice. JSON-RPC request IDs remain correlation
identifiers and do not deduplicate retries.
MCP now applies the same inactive-subscription write policy as /v1.
Read-only tools remain available, while message sends and other mutations
return subscription_inactive until billing is restored. Feature and quota
failures from the Business customer tools now use the documented structured
tool error envelope.
Read-only calls use the read rate-limit bucket and mutations use the write
bucket, even though both travel through HTTP POST. Every authenticated
tools/call admitted by the rate limiter is also recorded in API request logs
under a sanitized /mcp/tools/<tool_name> path without copying tool arguments
or message content.
Tools now publish MCP safety hints for read-only, destructive, idempotent,
and open-world behavior. Contact tools also match the Public API contract:
invalid exact phone filters are rejected, BSUID/username fields are documented,
and update_contact can update a WhatsApp username.