# Model Context Protocol tool annotations destructiveHint readOnlyHint idempotentHint openWorldHint

Status: search-observed
Product: MCP
Last verified: 2026-06-25
Canonical HTML: https://gitdocs.org/fix/model-context-protocol-tool-annotations-destructivehint-readonlyhint-idempotenthint-openworldhin
Machine JSON: https://gitdocs.org/api/fixes/model-context-protocol-tool-annotations-destructivehint-readonlyhint-idempotenthint-openworldhin.json

## Exact Symptom

See the observed Codex queries below.

## Diagnosis

Local client/server code can each be valid for an earlier protocol revision; only the negotiated current spec defines transport, session, and authorization behavior.

## Fix

```
Verifier checks current transport framing, session lifecycle, auth flow, and backwards compatibility where specified.
```

## Avoid

- Changing local code without checking the current external contract.
- Retrying the same install, build, or API call with no version/source change.
- Applying a broad unsafe bypass when a narrow compatibility fix is available.

## Observed Codex Queries

- Model Context Protocol tool annotations destructiveHint readOnlyHint idempotentHint openWorldHint
- site:modelcontextprotocol.io tools annotations destructiveHint readOnlyHint
- https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- 'destructiveHint' in https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- https://modelcontextprotocol.io/specification/2025-06-18/schema
- 'ToolAnnotations' in https://modelcontextprotocol.io/specification/2025-06-18/schema

## Sources

- MCP 2025-03-26 key changes: https://modelcontextprotocol.io/specification/2025-03-26/changelog
- Official reference opened by Codex: https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- Official reference opened by Codex: https://modelcontextprotocol.io/specification/2025-06-18/schema
