diff --git a/.chloggen/toolcall-name-required.yaml b/.chloggen/toolcall-name-required.yaml
new file mode 100644
index 0000000000..71939fa5dc
--- /dev/null
+++ b/.chloggen/toolcall-name-required.yaml
@@ -0,0 +1,22 @@
+# Use this changelog template to create an entry for release notes.
+#
+# If your change doesn't affect end users you should instead start
+# your pull request title with [chore] or use the "Skip Changelog" label.
+
+# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
+change_type: breaking
+
+# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db)
+component: gen-ai
+
+# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
+note: Execute tool call requires the name of the tool used for span naming.
+
+# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
+# The values here must be integers.
+issues: [3595]
+
+# (Optional) One or more lines of additional information to render under the primary note.
+# These lines will be padded with 2 spaces and then inserted directly into the document.
+# Use pipe (|) for multiline entries.
+subtext:
diff --git a/docs/gen-ai/gen-ai-spans.md b/docs/gen-ai/gen-ai-spans.md
index fa67bd82a6..0a43cfe1c4 100644
--- a/docs/gen-ai/gen-ai-spans.md
+++ b/docs/gen-ai/gen-ai-spans.md
@@ -605,10 +605,10 @@ instrumentations do not cover.
| Key | Stability | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Value Type | Description | Example Values |
| --- | --- | --- | --- | --- | --- |
| [`gen_ai.operation.name`](/docs/registry/attributes/gen-ai.md) |  | `Required` | string | The name of the operation being performed. [1] | `chat`; `generate_content`; `text_completion` |
+| [`gen_ai.tool.name`](/docs/registry/attributes/gen-ai.md) |  | `Required` | string | Name of the tool utilized by the agent. | `Flights` |
| [`error.type`](/docs/registry/attributes/error.md) |  | `Conditionally Required` if the operation ended in an error | string | Describes a class of error the operation ended with. [2] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` |
| [`gen_ai.tool.call.id`](/docs/registry/attributes/gen-ai.md) |  | `Recommended` if available | string | The tool call identifier. | `call_mszuSIzqtI65i1wAUOE8w5H4` |
| [`gen_ai.tool.description`](/docs/registry/attributes/gen-ai.md) |  | `Recommended` if available | string | The tool description. | `Multiply two numbers` |
-| [`gen_ai.tool.name`](/docs/registry/attributes/gen-ai.md) |  | `Recommended` | string | Name of the tool utilized by the agent. | `Flights` |
| [`gen_ai.tool.type`](/docs/registry/attributes/gen-ai.md) |  | `Recommended` if available | string | Type of the tool utilized by the agent [3] | `function`; `extension`; `datastore` |
| [`gen_ai.tool.call.arguments`](/docs/registry/attributes/gen-ai.md) |  | `Opt-In` | any | Parameters passed to the tool call. [4] | {
"location": "San Francisco?",
"date": "2025-10-01"
} |
| [`gen_ai.tool.call.result`](/docs/registry/attributes/gen-ai.md) |  | `Opt-In` | any | The result returned by the tool call (if any and if execution was successful). [5] | {
"temperature_range": {
"high": 75,
"low": 60
},
"conditions": "sunny"
} |
diff --git a/model/gen-ai/spans.yaml b/model/gen-ai/spans.yaml
index 2ff5f5c639..8fda161614 100644
--- a/model/gen-ai/spans.yaml
+++ b/model/gen-ai/spans.yaml
@@ -418,7 +418,7 @@ groups:
requirement_level: required
sampling_relevant: true
- ref: gen_ai.tool.name
- requirement_level: recommended
+ requirement_level: required
- ref: gen_ai.tool.call.id
requirement_level:
recommended: if available