The exact Cursor configuration we ran
With Cursor CLI 2026.07.23-e383d2b, we put this in .cursor/mcp.json:
Cursor accepted and approved the server. Its status-list command did not return before our timeout, so we tested the same configured stdio process through the MCP protocol directly. The published package initialized, listed its tools, returned decisions, and verified receipts.
What the MCP server really returned
Offline verification
Those receipts are real. What they prove is that the local MCP tool made and signed a decision. They do not prove Cursor consulted the tool before every provider call.
Why the verdict is no
A hard brake must be unavoidable on the path to the action. Cursor can call its model without calling spend_decide. An instruction that says “ask first” is agent cooperation, not enforcement. The current MCP schema also ignored the capability fields in our probe, so there was no honest capability refusal to show.
To make this a yes, Cursor needs a mandatory before-model or before-tool hook that can deny execution, or the provider client must be wrapped below Cursor. The MCP server also needs capability claim and required capability fields backed by the same server-side policy evaluation as the SDK.
- MCP loads
- yes
- signed spend decisions
- yes
- mandatory interposition
- no
- capability ceiling
- no
The exact protocol harness is in scripts/adoption-smoke/mcp-outcomes.mjs. Use the MCP server for explicit decisions and receipt inspection today. Do not market it as a hard Cursor-wide bound.