Behavioural hints for the tool, exactly as declared by the tool server. No defaults are filled in — see the per-field notes for what an absent value means.
Per the MCP specification, clients MUST treat these hints as untrusted unless the tool server is itself trusted. They are advisory metadata, not an authorization signal, and must not be the sole basis of a security decision.
| Field | Type | Required | Description |
|---|---|---|---|
title |
Optional[str] | ➖ | N/A |
read_only_hint |
Optional[bool] | ➖ | True if the tool does not modify its environment. Always present. MCP defines no distinction between an undeclared value and false here, sofalse means "not declared read-only" rather than "declared mutating". |
destructive_hint |
OptionalNullable[bool] | ➖ | True if the tool may perform destructive updates. Absent means the server did not declare it, for which the MCP default is true. Only meaningfulwhen readOnlyHint is false. |
idempotent_hint |
Optional[bool] | ➖ | True if repeated calls with the same arguments have no additional effect. Always present; as with readOnlyHint, false means "not declaredidempotent". Only meaningful when readOnlyHint is false. |
open_world_hint |
OptionalNullable[bool] | ➖ | True if the tool interacts with an open world of external entities. Absent means the server did not declare it, for which the MCP default is true. |