stateful_chat
Maintains conversation context across multiple interactions with Grok AI models, enabling continuous dialogue and follow-up responses.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | ||
| model | No | grok-4 | |
| response_id | No | ||
| system_prompt | No |
Implementation Reference
- src/server.py:396-417 (handler)The main stateful_chat tool handler function that creates and manages chat sessions with optional conversation continuity via response_id. It uses the xai_sdk Client to create stateful chat sessions, accepts prompt, model, response_id, and system_prompt parameters, and returns the response content with its ID.@mcp.tool() async def stateful_chat( prompt: str, model: str = "grok-4", response_id: Optional[str] = None, system_prompt: Optional[str] = None ): client = Client(api_key=XAI_API_KEY) chat_params = {"model": model, "store_messages": True} if response_id: chat_params["previous_response_id"] = response_id chat = client.chat.create(**chat_params) if system_prompt and not response_id: chat.append(system(system_prompt)) chat.append(user(prompt)) response = chat.sample() client.close() return f"{response.content}\n\n**Response ID:** `{response.id}`"
- src/server.py:420-428 (handler)Related handler function retrieve_stateful_response that retrieves previously stored chat responses by response_id using the xai_sdk client.@mcp.tool() async def retrieve_stateful_response(response_id: str): client = Client(api_key=XAI_API_KEY) responses = client.chat.get_stored_completion(response_id) client.close() if not responses: return f"No response found for id {response_id}" response = responses[0] if isinstance(responses, list) else responses return f"{response.content}\n\n**Response ID:** `{response.id}`"
- src/server.py:431-436 (handler)Related handler function delete_stateful_response that deletes stored chat responses by response_id using the xai_sdk client.@mcp.tool() async def delete_stateful_response(response_id: str): client = Client(api_key=XAI_API_KEY) client.chat.delete_stored_completion(response_id) client.close() return f"Deleted response `{response_id}`"