Skip to main content
Glama
bradcstevens

Copilot Studio Agent Direct Line MCP Server

by bradcstevens

get_conversation_history

Retrieve message history for a conversation using the conversation ID to review past interactions and maintain context.

Instructions

Retrieve message history for a conversation

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
conversationIdYesConversation ID
limitNoMaximum number of messages to return

Implementation Reference

  • The handler function for the get_conversation_history tool. Validates arguments, checks user access, retrieves conversation state, slices history if limit specified, formats messages, logs audit, and returns success response.
    /** * Handle get_conversation_history tool with user context */ private async handleGetConversationHistory( args: Record<string, unknown>, userContext?: UserContext ) { const { conversationId, limit } = validateToolArgs(GetConversationHistoryArgsSchema, args); // Validate permissions if user context exists if (userContext) { this.validateUserConversationAccess(userContext.userId, conversationId); } try { const convState = this.conversationManager.getConversation(conversationId); if (!convState) { throw new Error(`Conversation ${conversationId} not found or expired`); } let history = convState.messageHistory; if (limit && limit > 0) { history = history.slice(-limit); } const formattedHistory = history.map((activity) => ({ id: activity.id, type: activity.type, timestamp: activity.timestamp, from: activity.from, text: activity.text, attachments: activity.attachments, })); // Audit log this.logAudit({ timestamp: Date.now(), userId: userContext?.userId, action: 'get_conversation_history', conversationId, details: { messageCount: formattedHistory.length }, }); return createSuccessResponse({ conversationId, messageCount: formattedHistory.length, totalMessages: convState.messageHistory.length, messages: formattedHistory, }); } catch (error) { throw new Error( `Failed to get conversation history: ${error instanceof Error ? error.message : String(error)}` ); } }
  • Zod schema defining input validation for get_conversation_history: required conversationId string and optional positive integer limit.
    * Schema for get_conversation_history tool arguments */ export const GetConversationHistoryArgsSchema = z.object({ conversationId: z.string().min(1, 'Conversation ID is required'), limit: z.number().int().positive().optional(), }); export type GetConversationHistoryArgs = z.infer<typeof GetConversationHistoryArgsSchema>;
  • Tool registration in the MCP ListToolsRequestHandler, specifying name, description, and JSON schema for inputs.
    { name: 'get_conversation_history', description: 'Retrieve message history for a conversation', inputSchema: { type: 'object', properties: { conversationId: { type: 'string', description: 'Conversation ID', }, limit: { type: 'number', description: 'Maximum number of messages to return', }, }, required: ['conversationId'], }, },

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bradcstevens/copilot-studio-agent-direct-line-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server