v1.3.0
🚀 Features
Set destructiveHint in tool annotations - @DaleSeo PR #510
This PR explicitly sets the destructiveHint annotation for MCP tools based on the GraphQL operation type. We now set destructiveHint: false for queries and destructiveHint: true for mutations to avoid relying on client-side spec compliance.
We currently only sets readOnlyHint based on whether the operation is a query and omits destructiveHint. Per the MCP spec, destructiveHint defaults to true when omitted. The spec also says destructiveHint should be ignored when readOnlyHint is true, but OpenAI doesn't appear to implement this correctly.
🐛 Fixes
Fix broken non nullable return types in minified schema - @esilverm PR #514
Fix handling of minified return types to support non-null lists and other non-null cases to improve operation construction accuracy.
🛠 Maintenance
Clean up sanitize module - @DaleSeo PR #503
Just cleaning up unused code
Abstract away operation execution logic from the server's running state - @DaleSeo PR #517
I abstracted the operation execution logic from the server's running state, following the pattern used in apps. This change helped me write tests and identify a subtle bug where the execute tool wasn't propagating the OTel context.