diff --git a/.chloggen/gen-ai-memory-ops.yaml b/.chloggen/gen-ai-memory-ops.yaml
new file mode 100644
index 0000000000..c31bb4e10a
--- /dev/null
+++ b/.chloggen/gen-ai-memory-ops.yaml
@@ -0,0 +1,23 @@
+# 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: enhancement
+
+# 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: Add semantic conventions for GenAI memory operations.
+
+# 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: [3250]
+
+# (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: |
+ Adds `gen_ai.operation.name` values for memory operations and introduces `gen_ai.memory.*` attributes and spans for memory store lifecycle, search, upsert, and delete.
diff --git a/docs/gen-ai/anthropic.md b/docs/gen-ai/anthropic.md
index 7bd74b9431..8c31a9ea93 100644
--- a/docs/gen-ai/anthropic.md
+++ b/docs/gen-ai/anthropic.md
@@ -217,13 +217,18 @@ to enable populating optional properties.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
diff --git a/docs/gen-ai/aws-bedrock.md b/docs/gen-ai/aws-bedrock.md
index fc53143570..18ccb2abd1 100644
--- a/docs/gen-ai/aws-bedrock.md
+++ b/docs/gen-ai/aws-bedrock.md
@@ -241,13 +241,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
diff --git a/docs/gen-ai/azure-ai-inference.md b/docs/gen-ai/azure-ai-inference.md
index 4b3c5942ef..eae60e51c1 100644
--- a/docs/gen-ai/azure-ai-inference.md
+++ b/docs/gen-ai/azure-ai-inference.md
@@ -242,13 +242,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
diff --git a/docs/gen-ai/gen-ai-agent-spans.md b/docs/gen-ai/gen-ai-agent-spans.md
index b61619ffc6..83a38cf4a3 100644
--- a/docs/gen-ai/gen-ai-agent-spans.md
+++ b/docs/gen-ai/gen-ai-agent-spans.md
@@ -140,13 +140,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -390,13 +395,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -643,13 +653,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -795,13 +810,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
diff --git a/docs/gen-ai/gen-ai-events.md b/docs/gen-ai/gen-ai-events.md
index 02991e2de4..e4283d47e0 100644
--- a/docs/gen-ai/gen-ai-events.md
+++ b/docs/gen-ai/gen-ai-events.md
@@ -213,13 +213,18 @@ to enable populating optional properties.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
diff --git a/docs/gen-ai/gen-ai-memory-records.json b/docs/gen-ai/gen-ai-memory-records.json
new file mode 100644
index 0000000000..2b27bb705c
--- /dev/null
+++ b/docs/gen-ai/gen-ai-memory-records.json
@@ -0,0 +1,39 @@
+{
+ "$defs": {
+ "MemoryRecord": {
+ "additionalProperties": true,
+ "description": "Represents a single memory record stored in or retrieved from a memory store.",
+ "properties": {
+ "content": {
+ "description": "The content of the memory record.",
+ "title": "Content",
+ "type": "string"
+ },
+ "id": {
+ "description": "A unique identifier for the memory record.",
+ "title": "Id",
+ "type": "string"
+ },
+ "score": {
+ "description": "The relevance score of the memory record (populated on search results).",
+ "title": "Score",
+ "type": "number"
+ },
+ "metadata": {
+ "additionalProperties": true,
+ "description": "Provider-specific metadata associated with the memory record.",
+ "title": "Metadata",
+ "type": "object"
+ }
+ },
+ "title": "MemoryRecord",
+ "type": "object"
+ }
+ },
+ "description": "Represents the list of memory records stored in or retrieved from a memory store.",
+ "items": {
+ "$ref": "#/$defs/MemoryRecord"
+ },
+ "title": "MemoryRecords",
+ "type": "array"
+}
diff --git a/docs/gen-ai/gen-ai-metrics.md b/docs/gen-ai/gen-ai-metrics.md
index 8453007aea..2a0a3d64d7 100644
--- a/docs/gen-ai/gen-ai-metrics.md
+++ b/docs/gen-ai/gen-ai-metrics.md
@@ -123,13 +123,18 @@ applicable `aws.bedrock.*` attributes and are not expected to include
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -244,13 +249,18 @@ Instrumentations SHOULD document the list of errors they report.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -345,13 +355,18 @@ applicable `aws.bedrock.*` attributes and are not expected to include
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -446,13 +461,18 @@ applicable `aws.bedrock.*` attributes and are not expected to include
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -565,13 +585,18 @@ Instrumentations SHOULD document the list of errors they report.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -671,13 +696,18 @@ applicable `aws.bedrock.*` attributes and are not expected to include
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -776,13 +806,18 @@ applicable `aws.bedrock.*` attributes and are not expected to include
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
diff --git a/docs/gen-ai/gen-ai-spans.md b/docs/gen-ai/gen-ai-spans.md
index 01822c99ac..9574fbcb24 100644
--- a/docs/gen-ai/gen-ai-spans.md
+++ b/docs/gen-ai/gen-ai-spans.md
@@ -13,6 +13,12 @@ linkTitle: Spans
- [Embeddings](#embeddings)
- [Retrievals](#retrievals)
- [Execute tool span](#execute-tool-span)
+ - [Memory Operations](#memory-operations)
+ - [Create Memory Store](#create-memory-store)
+ - [Search Memory](#search-memory)
+ - [Update Memory](#update-memory)
+ - [Delete Memory](#delete-memory)
+ - [Delete Memory Store](#delete-memory-store)
- [Capturing instructions, inputs, and outputs](#capturing-instructions-inputs-and-outputs)
- [Full (buffered) content](#full-buffered-content)
- [Recording content on attributes](#recording-content-on-attributes)
@@ -255,13 +261,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -401,13 +412,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -535,13 +551,18 @@ Each document object SHOULD contain at least the following properties:
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -668,13 +689,681 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
+
+
+
+
+
+### Memory Operations
+
+#### Create Memory Store
+
+
+
+
+
+
+**Status:** 
+
+Describes creation/initialization of a memory store.
+
+The `gen_ai.operation.name` SHOULD be `create_memory_store`.
+
+**Span name** SHOULD be `create_memory_store {gen_ai.memory.store.id}`
+or `create_memory_store` if store id is not available.
+
+**Span kind** SHOULD be `CLIENT`.
+
+**Span status** SHOULD follow the [Recording Errors](/docs/general/recording-errors.md) document.
+
+**Attributes:**
+
+| 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.provider.name`](/docs/registry/attributes/gen-ai.md) |  | `Required` | string | The Generative AI provider as identified by the client or server instrumentation. [2] | `openai`; `gcp.gen_ai`; `gcp.vertex_ai` |
+| [`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. [3] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` |
+| [`gen_ai.memory.store.id`](/docs/registry/attributes/gen-ai.md) |  | `Conditionally Required` when returned by the operation | string | The unique identifier of the memory store. [4] | `ms_abc123`; `user-preferences-store` |
+| [`server.port`](/docs/registry/attributes/server.md) |  | `Conditionally Required` If `server.address` is set. | int | GenAI server port. [5] | `80`; `8080`; `443` |
+| [`server.address`](/docs/registry/attributes/server.md) |  | `Recommended` | string | GenAI server address. [6] | `example.com`; `10.1.2.80`; `/tmp/my.sock` |
+
+**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
+
+**[2] `gen_ai.provider.name`:** The attribute SHOULD be set based on the instrumentation's best
+knowledge and may differ from the actual model provider.
+
+Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
+are accessible using the OpenAI REST API and corresponding client libraries,
+but may proxy or host models from different providers.
+
+The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`
+attributes may help identify the actual system in use.
+
+The `gen_ai.provider.name` attribute acts as a discriminator that
+identifies the GenAI telemetry format flavor specific to that provider
+within GenAI semantic conventions.
+It SHOULD be set consistently with provider-specific attributes and signals.
+For example, GenAI spans, metrics, and events related to AWS Bedrock
+should have the `gen_ai.provider.name` set to `aws.bedrock` and include
+applicable `aws.bedrock.*` attributes and are not expected to include
+`openai.*` attributes.
+
+**[3] `error.type`:** The `error.type` SHOULD match the error code returned by the memory provider,
+the canonical name of exception that occurred, or another low-cardinality error identifier.
+Instrumentations SHOULD document the list of errors they report.
+
+**[4] `gen_ai.memory.store.id`:** Instrumentations for individual memory components SHOULD pick a low-cardinality identifier and SHOULD NOT set gen_ai.memory.store.id if no such identifier exists for this component. Semantic conventions for individual components SHOULD document what gen_ai.memory.store.id maps to within the implementation.
+
+**[5] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
+
+**[6] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
+
+---
+
+`error.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `_OTHER` | A fallback error value to be used when the instrumentation doesn't define a custom value. |  |
+
+---
+
+`gen_ai.operation.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
+| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
+| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
+| `execute_tool` | Execute a tool |  |
+| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
+| `invoke_agent` | Invoke GenAI agent |  |
+| `invoke_workflow` | Invoke GenAI workflow |  |
+| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
+| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
+
+---
+
+`gen_ai.provider.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `anthropic` | [Anthropic](https://www.anthropic.com/) |  |
+| `aws.bedrock` | [AWS Bedrock](https://aws.amazon.com/bedrock) |  |
+| `azure.ai.inference` | Azure AI Inference |  |
+| `azure.ai.openai` | [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) |  |
+| `cohere` | [Cohere](https://cohere.com/) |  |
+| `deepseek` | [DeepSeek](https://www.deepseek.com/) |  |
+| `gcp.gemini` | [Gemini](https://cloud.google.com/products/gemini) [7] |  |
+| `gcp.gen_ai` | Any Google generative AI endpoint [8] |  |
+| `gcp.vertex_ai` | [Vertex AI](https://cloud.google.com/vertex-ai) [9] |  |
+| `groq` | [Groq](https://groq.com/) |  |
+| `ibm.watsonx.ai` | [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) |  |
+| `mistral_ai` | [Mistral AI](https://mistral.ai/) |  |
+| `openai` | [OpenAI](https://openai.com/) |  |
+| `perplexity` | [Perplexity](https://www.perplexity.ai/) |  |
+| `x_ai` | [xAI](https://x.ai/) |  |
+
+**[7]:** Used when accessing the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API.
+
+**[8]:** May be used when specific backend is unknown.
+
+**[9]:** Used when accessing the 'aiplatform.googleapis.com' endpoint.
+
+
+
+
+
+#### Search Memory
+
+
+
+
+
+
+**Status:** 
+
+Describes a memory search/retrieval operation - querying a memory store for relevant memories.
+
+The `gen_ai.operation.name` SHOULD be `search_memory`.
+
+**Span name** SHOULD be `search_memory {gen_ai.memory.store.id}`
+or `search_memory` if store id is not available.
+
+**Span kind** SHOULD be `CLIENT`.
+
+**Span status** SHOULD follow the [Recording Errors](/docs/general/recording-errors.md) document.
+
+**Attributes:**
+
+| 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.provider.name`](/docs/registry/attributes/gen-ai.md) |  | `Required` | string | The Generative AI provider as identified by the client or server instrumentation. [2] | `openai`; `gcp.gen_ai`; `gcp.vertex_ai` |
+| [`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. [3] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` |
+| [`gen_ai.memory.store.id`](/docs/registry/attributes/gen-ai.md) |  | `Conditionally Required` if applicable | string | The unique identifier of the memory store. [4] | `ms_abc123`; `user-preferences-store` |
+| [`server.port`](/docs/registry/attributes/server.md) |  | `Conditionally Required` If `server.address` is set. | int | GenAI server port. [5] | `80`; `8080`; `443` |
+| [`server.address`](/docs/registry/attributes/server.md) |  | `Recommended` | string | GenAI server address. [6] | `example.com`; `10.1.2.80`; `/tmp/my.sock` |
+| [`gen_ai.memory.query.text`](/docs/registry/attributes/gen-ai.md) |  | `Opt-In` | string | The search query used to retrieve memories. [7] | `user dietary preferences`; `past flight bookings` |
+| [`gen_ai.memory.records`](/docs/registry/attributes/gen-ai.md) |  | `Opt-In` | any | The memory records stored or retrieved in a memory operation. [8] | [
{
"content": "User prefers dark mode",
"id": "mem_123",
"score": 0.95
},
{
"content": "User is based in Seattle",
"id": "mem_456",
"score": 0.82
}
] |
+
+**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
+
+**[2] `gen_ai.provider.name`:** The attribute SHOULD be set based on the instrumentation's best
+knowledge and may differ from the actual model provider.
+
+Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
+are accessible using the OpenAI REST API and corresponding client libraries,
+but may proxy or host models from different providers.
+
+The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`
+attributes may help identify the actual system in use.
+
+The `gen_ai.provider.name` attribute acts as a discriminator that
+identifies the GenAI telemetry format flavor specific to that provider
+within GenAI semantic conventions.
+It SHOULD be set consistently with provider-specific attributes and signals.
+For example, GenAI spans, metrics, and events related to AWS Bedrock
+should have the `gen_ai.provider.name` set to `aws.bedrock` and include
+applicable `aws.bedrock.*` attributes and are not expected to include
+`openai.*` attributes.
+
+**[3] `error.type`:** The `error.type` SHOULD match the error code returned by the memory provider,
+the canonical name of exception that occurred, or another low-cardinality error identifier.
+Instrumentations SHOULD document the list of errors they report.
+
+**[4] `gen_ai.memory.store.id`:** Instrumentations for individual memory components SHOULD pick a low-cardinality identifier and SHOULD NOT set gen_ai.memory.store.id if no such identifier exists for this component. Semantic conventions for individual components SHOULD document what gen_ai.memory.store.id maps to within the implementation.
+
+**[5] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
+
+**[6] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
+
+**[7] `gen_ai.memory.query.text`:**
+
+> [!WARNING]
+> This attribute may contain sensitive information.
+
+**[8] `gen_ai.memory.records`:** Instrumentations MUST follow [Memory records JSON schema](/docs/gen-ai/gen-ai-memory-records.json).
+When the attribute is recorded on events, it MUST be recorded in structured
+form. When recorded on spans, it MAY be recorded as a JSON string if structured
+format is not supported and SHOULD be recorded in structured form otherwise.
+
+Each record object SHOULD contain at least the following properties:
+`content` (any): The content of the memory record.
+
+Additional properties such as `id` (string), `score` (double), or
+`metadata` (object) MAY be included when available from the provider.
+
+> [!WARNING]
+> This attribute may contain sensitive information including user/PII data.
+
+Instrumentations SHOULD NOT capture this by default.
+
+---
+
+`error.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `_OTHER` | A fallback error value to be used when the instrumentation doesn't define a custom value. |  |
+
+---
+
+`gen_ai.operation.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
+| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
+| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
+| `execute_tool` | Execute a tool |  |
+| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
+| `invoke_agent` | Invoke GenAI agent |  |
+| `invoke_workflow` | Invoke GenAI workflow |  |
+| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
+| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
+
+---
+
+`gen_ai.provider.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `anthropic` | [Anthropic](https://www.anthropic.com/) |  |
+| `aws.bedrock` | [AWS Bedrock](https://aws.amazon.com/bedrock) |  |
+| `azure.ai.inference` | Azure AI Inference |  |
+| `azure.ai.openai` | [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) |  |
+| `cohere` | [Cohere](https://cohere.com/) |  |
+| `deepseek` | [DeepSeek](https://www.deepseek.com/) |  |
+| `gcp.gemini` | [Gemini](https://cloud.google.com/products/gemini) [9] |  |
+| `gcp.gen_ai` | Any Google generative AI endpoint [10] |  |
+| `gcp.vertex_ai` | [Vertex AI](https://cloud.google.com/vertex-ai) [11] |  |
+| `groq` | [Groq](https://groq.com/) |  |
+| `ibm.watsonx.ai` | [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) |  |
+| `mistral_ai` | [Mistral AI](https://mistral.ai/) |  |
+| `openai` | [OpenAI](https://openai.com/) |  |
+| `perplexity` | [Perplexity](https://www.perplexity.ai/) |  |
+| `x_ai` | [xAI](https://x.ai/) |  |
+
+**[9]:** Used when accessing the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API.
+
+**[10]:** May be used when specific backend is unknown.
+
+**[11]:** Used when accessing the 'aiplatform.googleapis.com' endpoint.
+
+
+
+
+
+#### Update Memory
+
+
+
+
+
+
+**Status:** 
+
+Describes a memory update operation - creating new or modifying existing memory records in a memory store.
+
+The `gen_ai.operation.name` SHOULD be `update_memory`.
+
+This operation covers both creating new and updating existing memory records.
+
+**Span name** SHOULD be `update_memory {gen_ai.memory.store.id}`
+or `update_memory` if store id is not available.
+
+**Span kind** SHOULD be `CLIENT`.
+
+**Span status** SHOULD follow the [Recording Errors](/docs/general/recording-errors.md) document.
+
+**Attributes:**
+
+| 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.provider.name`](/docs/registry/attributes/gen-ai.md) |  | `Required` | string | The Generative AI provider as identified by the client or server instrumentation. [2] | `openai`; `gcp.gen_ai`; `gcp.vertex_ai` |
+| [`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. [3] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` |
+| [`gen_ai.memory.store.id`](/docs/registry/attributes/gen-ai.md) |  | `Conditionally Required` if applicable | string | The unique identifier of the memory store. [4] | `ms_abc123`; `user-preferences-store` |
+| [`server.port`](/docs/registry/attributes/server.md) |  | `Conditionally Required` If `server.address` is set. | int | GenAI server port. [5] | `80`; `8080`; `443` |
+| [`server.address`](/docs/registry/attributes/server.md) |  | `Recommended` | string | GenAI server address. [6] | `example.com`; `10.1.2.80`; `/tmp/my.sock` |
+| [`gen_ai.memory.records`](/docs/registry/attributes/gen-ai.md) |  | `Opt-In` | any | The memory records stored or retrieved in a memory operation. [7] | [
{
"content": "User prefers dark mode",
"id": "mem_123",
"score": 0.95
},
{
"content": "User is based in Seattle",
"id": "mem_456",
"score": 0.82
}
] |
+
+**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
+
+**[2] `gen_ai.provider.name`:** The attribute SHOULD be set based on the instrumentation's best
+knowledge and may differ from the actual model provider.
+
+Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
+are accessible using the OpenAI REST API and corresponding client libraries,
+but may proxy or host models from different providers.
+
+The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`
+attributes may help identify the actual system in use.
+
+The `gen_ai.provider.name` attribute acts as a discriminator that
+identifies the GenAI telemetry format flavor specific to that provider
+within GenAI semantic conventions.
+It SHOULD be set consistently with provider-specific attributes and signals.
+For example, GenAI spans, metrics, and events related to AWS Bedrock
+should have the `gen_ai.provider.name` set to `aws.bedrock` and include
+applicable `aws.bedrock.*` attributes and are not expected to include
+`openai.*` attributes.
+
+**[3] `error.type`:** The `error.type` SHOULD match the error code returned by the memory provider,
+the canonical name of exception that occurred, or another low-cardinality error identifier.
+Instrumentations SHOULD document the list of errors they report.
+
+**[4] `gen_ai.memory.store.id`:** Instrumentations for individual memory components SHOULD pick a low-cardinality identifier and SHOULD NOT set gen_ai.memory.store.id if no such identifier exists for this component. Semantic conventions for individual components SHOULD document what gen_ai.memory.store.id maps to within the implementation.
+
+**[5] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
+
+**[6] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
+
+**[7] `gen_ai.memory.records`:** Instrumentations MUST follow [Memory records JSON schema](/docs/gen-ai/gen-ai-memory-records.json).
+When the attribute is recorded on events, it MUST be recorded in structured
+form. When recorded on spans, it MAY be recorded as a JSON string if structured
+format is not supported and SHOULD be recorded in structured form otherwise.
+
+Each record object SHOULD contain at least the following properties:
+`content` (any): The content of the memory record.
+
+Additional properties such as `id` (string), `score` (double), or
+`metadata` (object) MAY be included when available from the provider.
+
+> [!WARNING]
+> This attribute may contain sensitive information including user/PII data.
+
+Instrumentations SHOULD NOT capture this by default.
+
+---
+
+`error.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `_OTHER` | A fallback error value to be used when the instrumentation doesn't define a custom value. |  |
+
+---
+
+`gen_ai.operation.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
+| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
+| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
+| `execute_tool` | Execute a tool |  |
+| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
+| `invoke_agent` | Invoke GenAI agent |  |
+| `invoke_workflow` | Invoke GenAI workflow |  |
+| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
+| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
+
+---
+
+`gen_ai.provider.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `anthropic` | [Anthropic](https://www.anthropic.com/) |  |
+| `aws.bedrock` | [AWS Bedrock](https://aws.amazon.com/bedrock) |  |
+| `azure.ai.inference` | Azure AI Inference |  |
+| `azure.ai.openai` | [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) |  |
+| `cohere` | [Cohere](https://cohere.com/) |  |
+| `deepseek` | [DeepSeek](https://www.deepseek.com/) |  |
+| `gcp.gemini` | [Gemini](https://cloud.google.com/products/gemini) [8] |  |
+| `gcp.gen_ai` | Any Google generative AI endpoint [9] |  |
+| `gcp.vertex_ai` | [Vertex AI](https://cloud.google.com/vertex-ai) [10] |  |
+| `groq` | [Groq](https://groq.com/) |  |
+| `ibm.watsonx.ai` | [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) |  |
+| `mistral_ai` | [Mistral AI](https://mistral.ai/) |  |
+| `openai` | [OpenAI](https://openai.com/) |  |
+| `perplexity` | [Perplexity](https://www.perplexity.ai/) |  |
+| `x_ai` | [xAI](https://x.ai/) |  |
+
+**[8]:** Used when accessing the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API.
+
+**[9]:** May be used when specific backend is unknown.
+
+**[10]:** Used when accessing the 'aiplatform.googleapis.com' endpoint.
+
+
+
+
+
+#### Delete Memory
+
+
+
+
+
+
+**Status:** 
+
+Describes a memory deletion operation - removing one or more memory records.
+
+The `gen_ai.operation.name` SHOULD be `delete_memory`.
+
+**Span name** SHOULD be `delete_memory {gen_ai.memory.store.id}`
+or `delete_memory` if store id is not available.
+
+Depending on the instrumented library, lack of `gen_ai.memory.record.id` may indicate that
+operation intends to delete all memory records in the specified store.
+
+**Span kind** SHOULD be `CLIENT`.
+
+**Span status** SHOULD follow the [Recording Errors](/docs/general/recording-errors.md) document.
+
+**Attributes:**
+
+| 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.provider.name`](/docs/registry/attributes/gen-ai.md) |  | `Required` | string | The Generative AI provider as identified by the client or server instrumentation. [2] | `openai`; `gcp.gen_ai`; `gcp.vertex_ai` |
+| [`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. [3] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` |
+| [`gen_ai.memory.record.id`](/docs/registry/attributes/gen-ai.md) |  | `Conditionally Required` when deleting a specific memory record | string | The unique identifier of the memory record. | `mem_5j66UpCpwteGg4YSxUnt7lPY` |
+| [`gen_ai.memory.store.id`](/docs/registry/attributes/gen-ai.md) |  | `Conditionally Required` if applicable | string | The unique identifier of the memory store. [4] | `ms_abc123`; `user-preferences-store` |
+| [`server.port`](/docs/registry/attributes/server.md) |  | `Conditionally Required` If `server.address` is set. | int | GenAI server port. [5] | `80`; `8080`; `443` |
+| [`server.address`](/docs/registry/attributes/server.md) |  | `Recommended` | string | GenAI server address. [6] | `example.com`; `10.1.2.80`; `/tmp/my.sock` |
+
+**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
+
+**[2] `gen_ai.provider.name`:** The attribute SHOULD be set based on the instrumentation's best
+knowledge and may differ from the actual model provider.
+
+Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
+are accessible using the OpenAI REST API and corresponding client libraries,
+but may proxy or host models from different providers.
+
+The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`
+attributes may help identify the actual system in use.
+
+The `gen_ai.provider.name` attribute acts as a discriminator that
+identifies the GenAI telemetry format flavor specific to that provider
+within GenAI semantic conventions.
+It SHOULD be set consistently with provider-specific attributes and signals.
+For example, GenAI spans, metrics, and events related to AWS Bedrock
+should have the `gen_ai.provider.name` set to `aws.bedrock` and include
+applicable `aws.bedrock.*` attributes and are not expected to include
+`openai.*` attributes.
+
+**[3] `error.type`:** The `error.type` SHOULD match the error code returned by the memory provider,
+the canonical name of exception that occurred, or another low-cardinality error identifier.
+Instrumentations SHOULD document the list of errors they report.
+
+**[4] `gen_ai.memory.store.id`:** Instrumentations for individual memory components SHOULD pick a low-cardinality identifier and SHOULD NOT set gen_ai.memory.store.id if no such identifier exists for this component. Semantic conventions for individual components SHOULD document what gen_ai.memory.store.id maps to within the implementation.
+
+**[5] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
+
+**[6] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
+
+---
+
+`error.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `_OTHER` | A fallback error value to be used when the instrumentation doesn't define a custom value. |  |
+
+---
+
+`gen_ai.operation.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
+| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
+| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
+| `execute_tool` | Execute a tool |  |
+| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
+| `invoke_agent` | Invoke GenAI agent |  |
+| `invoke_workflow` | Invoke GenAI workflow |  |
+| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
+| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
+
+---
+
+`gen_ai.provider.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `anthropic` | [Anthropic](https://www.anthropic.com/) |  |
+| `aws.bedrock` | [AWS Bedrock](https://aws.amazon.com/bedrock) |  |
+| `azure.ai.inference` | Azure AI Inference |  |
+| `azure.ai.openai` | [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) |  |
+| `cohere` | [Cohere](https://cohere.com/) |  |
+| `deepseek` | [DeepSeek](https://www.deepseek.com/) |  |
+| `gcp.gemini` | [Gemini](https://cloud.google.com/products/gemini) [7] |  |
+| `gcp.gen_ai` | Any Google generative AI endpoint [8] |  |
+| `gcp.vertex_ai` | [Vertex AI](https://cloud.google.com/vertex-ai) [9] |  |
+| `groq` | [Groq](https://groq.com/) |  |
+| `ibm.watsonx.ai` | [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) |  |
+| `mistral_ai` | [Mistral AI](https://mistral.ai/) |  |
+| `openai` | [OpenAI](https://openai.com/) |  |
+| `perplexity` | [Perplexity](https://www.perplexity.ai/) |  |
+| `x_ai` | [xAI](https://x.ai/) |  |
+
+**[7]:** Used when accessing the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API.
+
+**[8]:** May be used when specific backend is unknown.
+
+**[9]:** Used when accessing the 'aiplatform.googleapis.com' endpoint.
+
+
+
+
+
+#### Delete Memory Store
+
+
+
+
+
+
+**Status:** 
+
+Describes deletion/deprovisioning of a memory store.
+
+The `gen_ai.operation.name` SHOULD be `delete_memory_store`.
+
+**Span name** SHOULD be `delete_memory_store {gen_ai.memory.store.id}`
+or `delete_memory_store` if store id is not available.
+
+**Span kind** SHOULD be `CLIENT`.
+
+**Span status** SHOULD follow the [Recording Errors](/docs/general/recording-errors.md) document.
+
+**Attributes:**
+
+| 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.provider.name`](/docs/registry/attributes/gen-ai.md) |  | `Required` | string | The Generative AI provider as identified by the client or server instrumentation. [2] | `openai`; `gcp.gen_ai`; `gcp.vertex_ai` |
+| [`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. [3] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` |
+| [`gen_ai.memory.store.id`](/docs/registry/attributes/gen-ai.md) |  | `Conditionally Required` if applicable | string | The unique identifier of the memory store. [4] | `ms_abc123`; `user-preferences-store` |
+| [`server.port`](/docs/registry/attributes/server.md) |  | `Conditionally Required` If `server.address` is set. | int | GenAI server port. [5] | `80`; `8080`; `443` |
+| [`server.address`](/docs/registry/attributes/server.md) |  | `Recommended` | string | GenAI server address. [6] | `example.com`; `10.1.2.80`; `/tmp/my.sock` |
+
+**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
+
+**[2] `gen_ai.provider.name`:** The attribute SHOULD be set based on the instrumentation's best
+knowledge and may differ from the actual model provider.
+
+Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
+are accessible using the OpenAI REST API and corresponding client libraries,
+but may proxy or host models from different providers.
+
+The `gen_ai.request.model`, `gen_ai.response.model`, and `server.address`
+attributes may help identify the actual system in use.
+
+The `gen_ai.provider.name` attribute acts as a discriminator that
+identifies the GenAI telemetry format flavor specific to that provider
+within GenAI semantic conventions.
+It SHOULD be set consistently with provider-specific attributes and signals.
+For example, GenAI spans, metrics, and events related to AWS Bedrock
+should have the `gen_ai.provider.name` set to `aws.bedrock` and include
+applicable `aws.bedrock.*` attributes and are not expected to include
+`openai.*` attributes.
+
+**[3] `error.type`:** The `error.type` SHOULD match the error code returned by the memory provider,
+the canonical name of exception that occurred, or another low-cardinality error identifier.
+Instrumentations SHOULD document the list of errors they report.
+
+**[4] `gen_ai.memory.store.id`:** Instrumentations for individual memory components SHOULD pick a low-cardinality identifier and SHOULD NOT set gen_ai.memory.store.id if no such identifier exists for this component. Semantic conventions for individual components SHOULD document what gen_ai.memory.store.id maps to within the implementation.
+
+**[5] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
+
+**[6] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
+
+---
+
+`error.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `_OTHER` | A fallback error value to be used when the instrumentation doesn't define a custom value. |  |
+
+---
+
+`gen_ai.operation.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
+| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
+| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
+| `execute_tool` | Execute a tool |  |
+| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
+| `invoke_agent` | Invoke GenAI agent |  |
+| `invoke_workflow` | Invoke GenAI workflow |  |
+| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
+| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
+
+---
+
+`gen_ai.provider.name` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
+
+| Value | Description | Stability |
+| --- | --- | --- |
+| `anthropic` | [Anthropic](https://www.anthropic.com/) |  |
+| `aws.bedrock` | [AWS Bedrock](https://aws.amazon.com/bedrock) |  |
+| `azure.ai.inference` | Azure AI Inference |  |
+| `azure.ai.openai` | [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) |  |
+| `cohere` | [Cohere](https://cohere.com/) |  |
+| `deepseek` | [DeepSeek](https://www.deepseek.com/) |  |
+| `gcp.gemini` | [Gemini](https://cloud.google.com/products/gemini) [7] |  |
+| `gcp.gen_ai` | Any Google generative AI endpoint [8] |  |
+| `gcp.vertex_ai` | [Vertex AI](https://cloud.google.com/vertex-ai) [9] |  |
+| `groq` | [Groq](https://groq.com/) |  |
+| `ibm.watsonx.ai` | [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) |  |
+| `mistral_ai` | [Mistral AI](https://mistral.ai/) |  |
+| `openai` | [OpenAI](https://openai.com/) |  |
+| `perplexity` | [Perplexity](https://www.perplexity.ai/) |  |
+| `x_ai` | [xAI](https://x.ai/) |  |
+
+**[7]:** Used when accessing the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API.
+
+**[8]:** May be used when specific backend is unknown.
+
+**[9]:** Used when accessing the 'aiplatform.googleapis.com' endpoint.
diff --git a/docs/gen-ai/mcp.md b/docs/gen-ai/mcp.md
index 372c903023..5d192c974a 100644
--- a/docs/gen-ai/mcp.md
+++ b/docs/gen-ai/mcp.md
@@ -246,13 +246,18 @@ deserialize it to an object. When recorded on spans, it MAY be recorded as a JSO
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -406,13 +411,18 @@ It SHOULD be set to `pipe` if the transport is stdio.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -545,13 +555,18 @@ It SHOULD be set to `pipe` if the transport is stdio.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -676,13 +691,18 @@ It SHOULD be set to `pipe` if the transport is stdio.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
diff --git a/docs/gen-ai/openai.md b/docs/gen-ai/openai.md
index cddeda5a9f..2807e03ed2 100644
--- a/docs/gen-ai/openai.md
+++ b/docs/gen-ai/openai.md
@@ -245,13 +245,18 @@ and SHOULD be provided **at span creation time** (if provided at all):
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
diff --git a/docs/registry/attributes/gen-ai.md b/docs/registry/attributes/gen-ai.md
index ff3af2372e..c841d255dd 100644
--- a/docs/registry/attributes/gen-ai.md
+++ b/docs/registry/attributes/gen-ai.md
@@ -27,13 +27,17 @@ This document defines the attributes used to describe telemetry in the context o
| `gen_ai.evaluation.score.label` |  | string | Human readable label for evaluation. [2] | `relevant`; `not_relevant`; `correct`; `incorrect`; `pass`; `fail` |
| `gen_ai.evaluation.score.value` |  | double | The evaluation score returned by the evaluator. | `4.0` |
| `gen_ai.input.messages` |  | any | The chat history provided to the model as an input. [3] | [
{
"role": "user",
"parts": [
{
"type": "text",
"content": "Weather in Paris?"
}
]
},
{
"role": "assistant",
"parts": [
{
"type": "tool_call",
"id": "call_VSPygqKTWdrhaFErNvMV18Yl",
"name": "get_weather",
"arguments": {
"location": "Paris"
}
}
]
},
{
"role": "tool",
"parts": [
{
"type": "tool_call_response",
"id": " call_VSPygqKTWdrhaFErNvMV18Yl",
"result": "rainy, 57°F"
}
]
}
] |
-| `gen_ai.operation.name` |  | string | The name of the operation being performed. [4] | `chat`; `generate_content`; `text_completion` |
-| `gen_ai.output.messages` |  | any | Messages returned by the model where each message represents a specific model response (choice, candidate). [5] | [
{
"role": "assistant",
"parts": [
{
"type": "text",
"content": "The weather in Paris is currently rainy with a temperature of 57°F."
}
],
"finish_reason": "stop"
}
] |
-| `gen_ai.output.type` |  | string | Represents the content type requested by the client. [6] | `text`; `json`; `image` |
+| `gen_ai.memory.query.text` |  | string | The search query used to retrieve memories. [4] | `user dietary preferences`; `past flight bookings` |
+| `gen_ai.memory.record.id` |  | string | The unique identifier of the memory record. | `mem_5j66UpCpwteGg4YSxUnt7lPY` |
+| `gen_ai.memory.records` |  | any | The memory records stored or retrieved in a memory operation. [5] | [
{
"content": "User prefers dark mode",
"id": "mem_123",
"score": 0.95
},
{
"content": "User is based in Seattle",
"id": "mem_456",
"score": 0.82
}
] |
+| `gen_ai.memory.store.id` |  | string | The unique identifier of the memory store. [6] | `ms_abc123`; `user-preferences-store` |
+| `gen_ai.operation.name` |  | string | The name of the operation being performed. [7] | `chat`; `generate_content`; `text_completion` |
+| `gen_ai.output.messages` |  | any | Messages returned by the model where each message represents a specific model response (choice, candidate). [8] | [
{
"role": "assistant",
"parts": [
{
"type": "text",
"content": "The weather in Paris is currently rainy with a temperature of 57°F."
}
],
"finish_reason": "stop"
}
] |
+| `gen_ai.output.type` |  | string | Represents the content type requested by the client. [9] | `text`; `json`; `image` |
| `gen_ai.prompt.name` |  | string | The name of the prompt that uniquely identifies it. | `analyze-code` |
-| `gen_ai.provider.name` |  | string | The Generative AI provider as identified by the client or server instrumentation. [7] | `openai`; `gcp.gen_ai`; `gcp.vertex_ai` |
+| `gen_ai.provider.name` |  | string | The Generative AI provider as identified by the client or server instrumentation. [10] | `openai`; `gcp.gen_ai`; `gcp.vertex_ai` |
| `gen_ai.request.choice.count` |  | int | The target number of candidate completions to return. | `3` |
-| `gen_ai.request.encoding_formats` |  | string[] | The encoding formats requested in an embeddings operation, if specified. [8] | `["base64"]`; `["float", "binary"]` |
+| `gen_ai.request.encoding_formats` |  | string[] | The encoding formats requested in an embeddings operation, if specified. [11] | `["base64"]`; `["float", "binary"]` |
| `gen_ai.request.frequency_penalty` |  | double | The frequency penalty setting for the GenAI request. | `0.1` |
| `gen_ai.request.max_tokens` |  | int | The maximum number of tokens the model generates for a request. | `100` |
| `gen_ai.request.model` |  | string | The name of the GenAI model a request is being made to. | `gpt-4` |
@@ -48,22 +52,22 @@ This document defines the attributes used to describe telemetry in the context o
| `gen_ai.response.id` |  | string | The unique identifier for the completion. | `chatcmpl-123` |
| `gen_ai.response.model` |  | string | The name of the model that generated the response. | `gpt-4-0613` |
| `gen_ai.response.time_to_first_chunk` |  | double | Time to first chunk in a streaming response, measured from request issuance, in seconds. The value is measured from when the client issues the generation request to when the first chunk is received in the response stream. | `0.5`; `1.2` |
-| `gen_ai.retrieval.documents` |  | any | The documents retrieved. [9] | [
{
"id": "doc_123",
"score": 0.95
},
{
"id": "doc_456",
"score": 0.87
},
{
"id": "doc_789",
"score": 0.82
}
] |
-| `gen_ai.retrieval.query.text` |  | string | The query text used for retrieval. [10] | `What is the capital of France?`; `weather in Paris` |
-| `gen_ai.system_instructions` |  | any | The system message or instructions provided to the GenAI model separately from the chat history. [11] | [
{
"type": "text",
"content": "You are an Agent that greet users, always use greetings tool to respond"
}
]; [
{
"type": "text",
"content": "You are a language translator."
},
{
"type": "text",
"content": "Your mission is to translate text in English to French."
}
] |
+| `gen_ai.retrieval.documents` |  | any | The documents retrieved. [12] | [
{
"id": "doc_123",
"score": 0.95
},
{
"id": "doc_456",
"score": 0.87
},
{
"id": "doc_789",
"score": 0.82
}
] |
+| `gen_ai.retrieval.query.text` |  | string | The query text used for retrieval. [13] | `What is the capital of France?`; `weather in Paris` |
+| `gen_ai.system_instructions` |  | any | The system message or instructions provided to the GenAI model separately from the chat history. [14] | [
{
"type": "text",
"content": "You are an Agent that greet users, always use greetings tool to respond"
}
]; [
{
"type": "text",
"content": "You are a language translator."
},
{
"type": "text",
"content": "Your mission is to translate text in English to French."
}
] |
| `gen_ai.token.type` |  | string | The type of token being counted. | `input`; `output` |
-| `gen_ai.tool.call.arguments` |  | any | Parameters passed to the tool call. [12] | {
"location": "San Francisco?",
"date": "2025-10-01"
} |
+| `gen_ai.tool.call.arguments` |  | any | Parameters passed to the tool call. [15] | {
"location": "San Francisco?",
"date": "2025-10-01"
} |
| `gen_ai.tool.call.id` |  | string | The tool call identifier. | `call_mszuSIzqtI65i1wAUOE8w5H4` |
-| `gen_ai.tool.call.result` |  | any | The result returned by the tool call (if any and if execution was successful). [13] | {
"temperature_range": {
"high": 75,
"low": 60
},
"conditions": "sunny"
} |
-| `gen_ai.tool.definitions` |  | any | The list of tool definitions available to the GenAI agent or model. [14] | [
{
"type": "function",
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location",
"unit"
]
}
}
] |
+| `gen_ai.tool.call.result` |  | any | The result returned by the tool call (if any and if execution was successful). [16] | {
"temperature_range": {
"high": 75,
"low": 60
},
"conditions": "sunny"
} |
+| `gen_ai.tool.definitions` |  | any | The list of tool definitions available to the GenAI agent or model. [17] | [
{
"type": "function",
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"celsius",
"fahrenheit"
]
}
},
"required": [
"location",
"unit"
]
}
}
] |
| `gen_ai.tool.description` |  | string | The tool description. | `Multiply two numbers` |
| `gen_ai.tool.name` |  | string | Name of the tool utilized by the agent. | `Flights` |
-| `gen_ai.tool.type` |  | string | Type of the tool utilized by the agent [15] | `function`; `extension`; `datastore` |
-| `gen_ai.usage.cache_creation.input_tokens` |  | int | The number of input tokens written to a provider-managed cache. [16] | `25` |
-| `gen_ai.usage.cache_read.input_tokens` |  | int | The number of input tokens served from a provider-managed cache. [17] | `50` |
-| `gen_ai.usage.input_tokens` |  | int | The number of tokens used in the GenAI input (prompt). [18] | `100` |
+| `gen_ai.tool.type` |  | string | Type of the tool utilized by the agent [18] | `function`; `extension`; `datastore` |
+| `gen_ai.usage.cache_creation.input_tokens` |  | int | The number of input tokens written to a provider-managed cache. [19] | `25` |
+| `gen_ai.usage.cache_read.input_tokens` |  | int | The number of input tokens served from a provider-managed cache. [20] | `50` |
+| `gen_ai.usage.input_tokens` |  | int | The number of tokens used in the GenAI input (prompt). [21] | `100` |
| `gen_ai.usage.output_tokens` |  | int | The number of tokens used in the GenAI response (completion). | `180` |
-| `gen_ai.workflow.name` |  | string | Human-readable name of the GenAI workflow provided by the application. [19] | `multi_agent_rag`; `customer_support_pipeline` |
+| `gen_ai.workflow.name` |  | string | Human-readable name of the GenAI workflow provided by the application. [22] | `multi_agent_rag`; `customer_support_pipeline` |
**[1] `gen_ai.data_source.id`:** Data sources are used by AI agents and RAG applications to store grounding data. A data source may be an external database, object store, document collection, website, or any other storage system used by the GenAI agent or application. The `gen_ai.data_source.id` SHOULD match the identifier used by the GenAI system rather than a name specific to the external storage, such as a database or object store. Semantic conventions referencing `gen_ai.data_source.id` MAY also leverage additional attributes, such as `db.*`, to further identify and describe the data source.
@@ -84,9 +88,32 @@ input messages.
See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)
section for more details.
-**[4] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
+**[4] `gen_ai.memory.query.text`:**
-**[5] `gen_ai.output.messages`:** Instrumentations MUST follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json)
+> [!WARNING]
+> This attribute may contain sensitive information.
+
+**[5] `gen_ai.memory.records`:** Instrumentations MUST follow [Memory records JSON schema](/docs/gen-ai/gen-ai-memory-records.json).
+When the attribute is recorded on events, it MUST be recorded in structured
+form. When recorded on spans, it MAY be recorded as a JSON string if structured
+format is not supported and SHOULD be recorded in structured form otherwise.
+
+Each record object SHOULD contain at least the following properties:
+`content` (any): The content of the memory record.
+
+Additional properties such as `id` (string), `score` (double), or
+`metadata` (object) MAY be included when available from the provider.
+
+> [!WARNING]
+> This attribute may contain sensitive information including user/PII data.
+
+Instrumentations SHOULD NOT capture this by default.
+
+**[6] `gen_ai.memory.store.id`:** Instrumentations for individual memory components SHOULD pick a low-cardinality identifier and SHOULD NOT set gen_ai.memory.store.id if no such identifier exists for this component. Semantic conventions for individual components SHOULD document what gen_ai.memory.store.id maps to within the implementation.
+
+**[7] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
+
+**[8] `gen_ai.output.messages`:** Instrumentations MUST follow [Output messages JSON schema](/docs/gen-ai/gen-ai-output-messages.json)
Each message represents a single output choice/candidate generated by
the model. Each message corresponds to exactly one generation
@@ -106,11 +133,11 @@ output messages.
See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)
section for more details.
-**[6] `gen_ai.output.type`:** This attribute SHOULD be used when the client requests output of a specific type. The model may return zero or more outputs of this type.
+**[9] `gen_ai.output.type`:** This attribute SHOULD be used when the client requests output of a specific type. The model may return zero or more outputs of this type.
This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.
Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.
-**[7] `gen_ai.provider.name`:** The attribute SHOULD be set based on the instrumentation's best
+**[10] `gen_ai.provider.name`:** The attribute SHOULD be set based on the instrumentation's best
knowledge and may differ from the actual model provider.
Multiple providers, including Azure OpenAI, Gemini, and AI hosting platforms
@@ -129,9 +156,9 @@ should have the `gen_ai.provider.name` set to `aws.bedrock` and include
applicable `aws.bedrock.*` attributes and are not expected to include
`openai.*` attributes.
-**[8] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
+**[11] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
-**[9] `gen_ai.retrieval.documents`:** Instrumentations MUST follow [Retrieval documents JSON schema](/docs/gen-ai/gen-ai-retrieval-documents.json).
+**[12] `gen_ai.retrieval.documents`:** Instrumentations MUST follow [Retrieval documents JSON schema](/docs/gen-ai/gen-ai-retrieval-documents.json).
When the attribute is recorded on events, it MUST be recorded in structured
form. When recorded on spans, it MAY be recorded as a JSON string if structured
format is not supported and SHOULD be recorded in structured form otherwise.
@@ -139,12 +166,12 @@ format is not supported and SHOULD be recorded in structured form otherwise.
Each document object SHOULD contain at least the following properties:
`id` (string): A unique identifier for the document, `score` (double): The relevance score of the document
-**[10] `gen_ai.retrieval.query.text`:**
+**[13] `gen_ai.retrieval.query.text`:**
> [!Warning]
> This attribute may contain sensitive information.
-**[11] `gen_ai.system_instructions`:** This attribute SHOULD be used when the corresponding provider or API
+**[14] `gen_ai.system_instructions`:** This attribute SHOULD be used when the corresponding provider or API
allows to provide system instructions or messages separately from the
chat history.
@@ -165,7 +192,7 @@ system instructions.
See [Recording content on attributes](/docs/gen-ai/gen-ai-spans.md#recording-content-on-attributes)
section for more details.
-**[12] `gen_ai.tool.call.arguments`:**
+**[15] `gen_ai.tool.call.arguments`:**
> [!WARNING]
> This attribute may contain sensitive information.
@@ -174,7 +201,7 @@ It's expected to be an object - in case a serialized string is available
to the instrumentation, the instrumentation SHOULD do the best effort to
deserialize it to an object. When recorded on spans, it MAY be recorded as a JSON string if structured format is not supported and SHOULD be recorded in structured form otherwise.
-**[13] `gen_ai.tool.call.result`:**
+**[16] `gen_ai.tool.call.result`:**
> [!WARNING]
> This attribute may contain sensitive information.
@@ -183,7 +210,7 @@ It's expected to be an object - in case a serialized string is available
to the instrumentation, the instrumentation SHOULD do the best effort to
deserialize it to an object. When recorded on spans, it MAY be recorded as a JSON string if structured format is not supported and SHOULD be recorded in structured form otherwise.
-**[14] `gen_ai.tool.definitions`:** Instrumentations MUST follow [Tool Definitions JSON Schema](/docs/gen-ai/gen-ai-tool-definitions.json).
+**[17] `gen_ai.tool.definitions`:** Instrumentations MUST follow [Tool Definitions JSON Schema](/docs/gen-ai/gen-ai-tool-definitions.json).
When the attribute is recorded on events, it MUST be recorded in structured
form. When recorded on spans, it MAY be recorded as a JSON string if structured
@@ -193,22 +220,22 @@ Since this attribute could be large, it's NOT RECOMMENDED to populate
non-required properties by default. Instrumentations MAY provide a way
to enable populating optional properties.
-**[15] `gen_ai.tool.type`:** Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems.
+**[18] `gen_ai.tool.type`:** Extension: A tool executed on the agent-side to directly call external APIs, bridging the gap between the agent and real-world systems.
Agent-side operations involve actions that are performed by the agent on the server or within the agent's controlled environment.
Function: A tool executed on the client-side, where the agent generates parameters for a predefined function, and the client executes the logic.
Client-side operations are actions taken on the user's end or within the client application.
Datastore: A tool used by the agent to access and query structured or unstructured external data for retrieval-augmented tasks or knowledge updates.
-**[16] `gen_ai.usage.cache_creation.input_tokens`:** The value SHOULD be included in `gen_ai.usage.input_tokens`.
+**[19] `gen_ai.usage.cache_creation.input_tokens`:** The value SHOULD be included in `gen_ai.usage.input_tokens`.
-**[17] `gen_ai.usage.cache_read.input_tokens`:** The value SHOULD be included in `gen_ai.usage.input_tokens`.
+**[20] `gen_ai.usage.cache_read.input_tokens`:** The value SHOULD be included in `gen_ai.usage.input_tokens`.
-**[18] `gen_ai.usage.input_tokens`:** This value SHOULD include all types of input tokens, including cached tokens.
+**[21] `gen_ai.usage.input_tokens`:** This value SHOULD include all types of input tokens, including cached tokens.
Instrumentations SHOULD make a best effort to populate this value, using a total
provided by the provider when available or, depending on the provider API,
by summing different token types parsed from the provider output.
-**[19] `gen_ai.workflow.name`:** This attribute can be populated in different frameworks eg: name of the first chain in LangChain OR name of the crew in CrewAI.
+**[22] `gen_ai.workflow.name`:** This attribute can be populated in different frameworks eg: name of the first chain in LangChain OR name of the crew in CrewAI.
---
@@ -218,13 +245,18 @@ by summing different token types parsed from the provider output.
| --- | --- | --- |
| `chat` | Chat completion operation such as [OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat) |  |
| `create_agent` | Create GenAI agent |  |
+| `create_memory_store` | Create/initialize a memory store |  |
+| `delete_memory` | Delete memory records |  |
+| `delete_memory_store` | Delete/deprovision a memory store |  |
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
| `execute_tool` | Execute a tool |  |
| `generate_content` | Multimodal content generation operation such as [Gemini Generate Content](https://ai.google.dev/api/generate-content) |  |
| `invoke_agent` | Invoke GenAI agent |  |
| `invoke_workflow` | Invoke GenAI workflow |  |
| `retrieval` | Retrieval operation such as [OpenAI Search Vector Store API](https://platform.openai.com/docs/api-reference/vector-stores/search) |  |
+| `search_memory` | Search/query memories from a memory store |  |
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
+| `update_memory` | Create or update (upsert) memory records |  |
---
@@ -249,9 +281,9 @@ by summing different token types parsed from the provider output.
| `azure.ai.openai` | [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-services/openai/overview) |  |
| `cohere` | [Cohere](https://cohere.com/) |  |
| `deepseek` | [DeepSeek](https://www.deepseek.com/) |  |
-| `gcp.gemini` | [Gemini](https://cloud.google.com/products/gemini) [20] |  |
-| `gcp.gen_ai` | Any Google generative AI endpoint [21] |  |
-| `gcp.vertex_ai` | [Vertex AI](https://cloud.google.com/vertex-ai) [22] |  |
+| `gcp.gemini` | [Gemini](https://cloud.google.com/products/gemini) [23] |  |
+| `gcp.gen_ai` | Any Google generative AI endpoint [24] |  |
+| `gcp.vertex_ai` | [Vertex AI](https://cloud.google.com/vertex-ai) [25] |  |
| `groq` | [Groq](https://groq.com/) |  |
| `ibm.watsonx.ai` | [IBM Watsonx AI](https://www.ibm.com/products/watsonx-ai) |  |
| `mistral_ai` | [Mistral AI](https://mistral.ai/) |  |
@@ -259,11 +291,11 @@ by summing different token types parsed from the provider output.
| `perplexity` | [Perplexity](https://www.perplexity.ai/) |  |
| `x_ai` | [xAI](https://x.ai/) |  |
-**[20]:** Used when accessing the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API.
+**[23]:** Used when accessing the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API.
-**[21]:** May be used when specific backend is unknown.
+**[24]:** May be used when specific backend is unknown.
-**[22]:** Used when accessing the 'aiplatform.googleapis.com' endpoint.
+**[25]:** Used when accessing the 'aiplatform.googleapis.com' endpoint.
---
@@ -300,9 +332,9 @@ Describes deprecated `gen_ai` attributes.
| `azure.ai.openai` | Azure OpenAI |  |
| `cohere` | Cohere |  |
| `deepseek` | DeepSeek |  |
-| `gcp.gemini` | Gemini [23] |  |
-| `gcp.gen_ai` | Any Google generative AI endpoint [24] |  |
-| `gcp.vertex_ai` | Vertex AI [25] |  |
+| `gcp.gemini` | Gemini [26] |  |
+| `gcp.gen_ai` | Any Google generative AI endpoint [27] |  |
+| `gcp.vertex_ai` | Vertex AI [28] |  |
| `groq` | Groq |  |
| `ibm.watsonx.ai` | IBM Watsonx AI |  |
| `mistral_ai` | Mistral AI |  |
@@ -310,11 +342,11 @@ Describes deprecated `gen_ai` attributes.
| `perplexity` | Perplexity |  |
| `xai` | xAI |  |
-**[23]:** This refers to the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API. May use common attributes prefixed with 'gcp.gen_ai.'.
+**[26]:** This refers to the 'generativelanguage.googleapis.com' endpoint. Also known as the AI Studio API. May use common attributes prefixed with 'gcp.gen_ai.'.
-**[24]:** May be used when specific backend is unknown. May use common attributes prefixed with 'gcp.gen_ai.'.
+**[27]:** May be used when specific backend is unknown. May use common attributes prefixed with 'gcp.gen_ai.'.
-**[25]:** This refers to the 'aiplatform.googleapis.com' endpoint. May use common attributes prefixed with 'gcp.gen_ai.'.
+**[28]:** This refers to the 'aiplatform.googleapis.com' endpoint. May use common attributes prefixed with 'gcp.gen_ai.'.
## Deprecated OpenAI GenAI Attributes
diff --git a/model/gen-ai/registry.yaml b/model/gen-ai/registry.yaml
index 6b9ffe4970..199a188654 100644
--- a/model/gen-ai/registry.yaml
+++ b/model/gen-ai/registry.yaml
@@ -426,6 +426,26 @@ groups:
value: "invoke_workflow"
brief: 'Invoke GenAI workflow'
stability: development
+ - id: search_memory
+ value: "search_memory"
+ brief: 'Search/query memories from a memory store'
+ stability: development
+ - id: update_memory
+ value: "update_memory"
+ brief: 'Create or update (upsert) memory records'
+ stability: development
+ - id: delete_memory
+ value: "delete_memory"
+ brief: 'Delete memory records'
+ stability: development
+ - id: create_memory_store
+ value: "create_memory_store"
+ brief: 'Create/initialize a memory store'
+ stability: development
+ - id: delete_memory_store
+ value: "delete_memory_store"
+ brief: 'Delete/deprovision a memory store'
+ stability: development
brief: The name of the operation being performed.
note: >
If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic
@@ -683,3 +703,64 @@ groups:
examples: [ "multi_agent_rag", "customer_support_pipeline" ]
note: |
This attribute can be populated in different frameworks eg: name of the first chain in LangChain OR name of the crew in CrewAI.
+
+ - id: gen_ai.memory.store.id
+ stability: development
+ type: string
+ brief: The unique identifier of the memory store.
+ note: >
+ Instrumentations for individual memory components SHOULD pick a low-cardinality identifier and
+ SHOULD NOT set gen_ai.memory.store.id if no such identifier exists for this component. Semantic
+ conventions for individual components SHOULD document what gen_ai.memory.store.id maps to within
+ the implementation.
+ examples: ["ms_abc123", "user-preferences-store"]
+
+ - id: gen_ai.memory.record.id
+ stability: development
+ type: string
+ brief: The unique identifier of the memory record.
+ examples: ["mem_5j66UpCpwteGg4YSxUnt7lPY"]
+
+ - id: gen_ai.memory.query.text
+ stability: development
+ type: string
+ brief: The search query used to retrieve memories.
+ note: |
+ > [!WARNING]
+ > This attribute may contain sensitive information.
+ examples: ["user dietary preferences", "past flight bookings"]
+
+ - id: gen_ai.memory.records
+ stability: development
+ type: any
+ brief: The memory records stored or retrieved in a memory operation.
+ note: |
+ Instrumentations MUST follow [Memory records JSON schema](/docs/gen-ai/gen-ai-memory-records.json).
+ When the attribute is recorded on events, it MUST be recorded in structured
+ form. When recorded on spans, it MAY be recorded as a JSON string if structured
+ format is not supported and SHOULD be recorded in structured form otherwise.
+
+ Each record object SHOULD contain at least the following properties:
+ `content` (any): The content of the memory record.
+
+ Additional properties such as `id` (string), `score` (double), or
+ `metadata` (object) MAY be included when available from the provider.
+
+ > [!WARNING]
+ > This attribute may contain sensitive information including user/PII data.
+
+ Instrumentations SHOULD NOT capture this by default.
+ examples:
+ - |
+ [
+ {
+ "content": "User prefers dark mode",
+ "id": "mem_123",
+ "score": 0.95
+ },
+ {
+ "content": "User is based in Seattle",
+ "id": "mem_456",
+ "score": 0.82
+ }
+ ]
diff --git a/model/gen-ai/spans.yaml b/model/gen-ai/spans.yaml
index 432197d1d6..0b52bd2981 100644
--- a/model/gen-ai/spans.yaml
+++ b/model/gen-ai/spans.yaml
@@ -545,6 +545,153 @@ groups:
the canonical name of exception that occurred, or another low-cardinality error identifier.
Instrumentations SHOULD document the list of errors they report.
+ - id: attributes.gen_ai.memory.client
+ type: attribute_group
+ stability: development
+ brief: >
+ Common attributes for GenAI memory operation spans.
+ note: |
+ Applicable to the following `gen_ai.operation.name` values:
+ `create_memory_store`, `search_memory`, `update_memory`, `delete_memory`, `delete_memory_store`.
+ attributes:
+ - ref: gen_ai.operation.name
+ requirement_level: required
+ - ref: server.address
+ brief: GenAI server address.
+ requirement_level: recommended
+ - ref: server.port
+ brief: GenAI server port.
+ requirement_level:
+ conditionally_required: If `server.address` is set.
+ - ref: error.type
+ requirement_level:
+ conditionally_required: "if the operation ended in an error"
+ note: |
+ The `error.type` SHOULD match the error code returned by the memory provider,
+ the canonical name of exception that occurred, or another low-cardinality error identifier.
+ Instrumentations SHOULD document the list of errors they report.
+
+ - id: span.gen_ai.create_memory_store.client
+ type: span
+ stability: development
+ span_kind: client
+ extends: attributes.gen_ai.memory.client
+ brief: >
+ Describes creation/initialization of a memory store.
+ note: |
+ The `gen_ai.operation.name` SHOULD be `create_memory_store`.
+
+ **Span name** SHOULD be `create_memory_store {gen_ai.memory.store.id}`
+ or `create_memory_store` if store id is not available.
+ attributes:
+ - ref: gen_ai.operation.name
+ requirement_level: required
+ - ref: gen_ai.provider.name
+ requirement_level: required
+ - ref: gen_ai.memory.store.id
+ requirement_level:
+ conditionally_required: when returned by the operation
+
+ - id: span.gen_ai.search_memory.client
+ type: span
+ stability: development
+ span_kind: client
+ extends: attributes.gen_ai.memory.client
+ brief: >
+ Describes a memory search/retrieval operation - querying a memory store
+ for relevant memories.
+ note: |
+ The `gen_ai.operation.name` SHOULD be `search_memory`.
+
+ **Span name** SHOULD be `search_memory {gen_ai.memory.store.id}`
+ or `search_memory` if store id is not available.
+ attributes:
+ - ref: gen_ai.operation.name
+ requirement_level: required
+ - ref: gen_ai.provider.name
+ requirement_level: required
+ - ref: gen_ai.memory.store.id
+ requirement_level:
+ conditionally_required: if applicable
+ - ref: gen_ai.memory.query.text
+ requirement_level: opt_in
+ - ref: gen_ai.memory.records
+ requirement_level: opt_in
+
+ - id: span.gen_ai.update_memory.client
+ type: span
+ stability: development
+ span_kind: client
+ extends: attributes.gen_ai.memory.client
+ brief: >
+ Describes a memory update operation - creating new or modifying
+ existing memory records in a memory store.
+ note: |
+ The `gen_ai.operation.name` SHOULD be `update_memory`.
+
+ This operation covers both creating new and updating existing memory records.
+
+ **Span name** SHOULD be `update_memory {gen_ai.memory.store.id}`
+ or `update_memory` if store id is not available.
+ attributes:
+ - ref: gen_ai.operation.name
+ requirement_level: required
+ - ref: gen_ai.provider.name
+ requirement_level: required
+ - ref: gen_ai.memory.store.id
+ requirement_level:
+ conditionally_required: if applicable
+ - ref: gen_ai.memory.records
+ requirement_level: opt_in
+
+ - id: span.gen_ai.delete_memory.client
+ type: span
+ stability: development
+ span_kind: client
+ extends: attributes.gen_ai.memory.client
+ brief: >
+ Describes a memory deletion operation - removing one or more memory records.
+ note: |
+ The `gen_ai.operation.name` SHOULD be `delete_memory`.
+
+ **Span name** SHOULD be `delete_memory {gen_ai.memory.store.id}`
+ or `delete_memory` if store id is not available.
+
+ Depending on the instrumented library, lack of `gen_ai.memory.record.id` may indicate that
+ operation intends to delete all memory records in the specified store.
+ attributes:
+ - ref: gen_ai.operation.name
+ requirement_level: required
+ - ref: gen_ai.provider.name
+ requirement_level: required
+ - ref: gen_ai.memory.store.id
+ requirement_level:
+ conditionally_required: if applicable
+ - ref: gen_ai.memory.record.id
+ requirement_level:
+ conditionally_required: when deleting a specific memory record
+
+ - id: span.gen_ai.delete_memory_store.client
+ type: span
+ stability: development
+ span_kind: client
+ extends: attributes.gen_ai.memory.client
+ brief: >
+ Describes deletion/deprovisioning of a memory store.
+ note: |
+ The `gen_ai.operation.name` SHOULD be `delete_memory_store`.
+
+ **Span name** SHOULD be `delete_memory_store {gen_ai.memory.store.id}`
+ or `delete_memory_store` if store id is not available.
+ attributes:
+ - ref: gen_ai.operation.name
+ requirement_level: required
+ - ref: gen_ai.provider.name
+ requirement_level: required
+ - ref: gen_ai.memory.store.id
+ requirement_level:
+ conditionally_required: if applicable
+
- id: span.aws.bedrock.client
extends: span.gen_ai.inference.client
stability: development