Skip to main content
Glama
jakedx6
by jakedx6

get_document_collaboration

Retrieve collaboration history and current collaborators for documents, including recent activity within specified time ranges.

Instructions

Get collaboration history and current collaborators for a document

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
document_idYesID of the document
include_activityNoWhether to include recent activity
time_rangeNoTime range for activityweek

Implementation Reference

  • Core handler function implementing the get_document_collaboration tool logic: validates input, fetches document and collaborations, retrieves activity if requested, analyzes patterns, and returns structured response with collaborators, activity, and statistics.
    export const getDocumentCollaboration = requireAuth(async (args: any) => { const { document_id, include_activity, time_range } = GetDocumentCollaborationSchema.parse(args) logger.info('Getting document collaboration', { document_id, time_range }) const document = await supabaseService.getDocument(document_id) if (!document) { throw new Error('Document not found') } // Get collaborators const collaborations = await supabaseService.getDocumentCollaborations(document_id) // Get activity if requested let activity = [] if (include_activity) { activity = await getDocumentActivity(document_id, time_range) } // Analyze collaboration patterns const collaborationStats = analyzeCollaborationPatterns(collaborations, activity) return { document: { id: document.id, title: document.title, created_by: document.created_by }, collaborators: collaborations.map(c => ({ user_id: c.user_id, permission_level: c.permission_level, status: c.status, joined_at: c.invited_at, last_activity: activity.filter(a => a.user_id === c.user_id)[0]?.timestamp })), activity: activity.slice(0, 50), // Limit to 50 recent activities statistics: collaborationStats } })
  • Zod schema used for input validation in the getDocumentCollaboration handler.
    const GetDocumentCollaborationSchema = z.object({ document_id: z.string().min(1), include_activity: z.boolean().default(true), time_range: z.enum(['day', 'week', 'month', 'all']).default('week') })
  • MCPTool registration object defining the tool's metadata, name, description, and input schema for the MCP system.
    export const getDocumentCollaborationTool: MCPTool = { name: 'get_document_collaboration', description: 'Get collaboration history and current collaborators for a document', inputSchema: { type: 'object', properties: { document_id: { type: 'string', description: 'ID of the document' }, include_activity: { type: 'boolean', default: true, description: 'Whether to include recent activity' }, time_range: { type: 'string', enum: ['day', 'week', 'month', 'all'], default: 'week', description: 'Time range for activity' } }, required: ['document_id'] } }
  • Registration of the getDocumentCollaboration handler function in the exported documentHandlers object, mapping tool name to implementation.
    export const documentHandlers = { list_documents: listDocuments, create_document: createDocument, get_document: getDocument, update_document: updateDocument, search_documents: searchDocuments, get_document_context: getDocumentContext, add_document_collaborator: addDocumentCollaborator, analyze_document_content: analyzeDocumentContent, get_document_collaboration: getDocumentCollaboration, generate_document_template: generateDocumentTemplate, bulk_document_operations: bulkDocumentOperations }
  • Helper function called by the handler to analyze collaboration statistics and patterns.
    function analyzeCollaborationPatterns(collaborations: any[], activity: any[]): any { return { total_collaborators: collaborations.length, active_collaborators: collaborations.filter(c => c.status === 'active').length, permission_distribution: { read: collaborations.filter(c => c.permission_level === 'read').length, comment: collaborations.filter(c => c.permission_level === 'comment').length, edit: collaborations.filter(c => c.permission_level === 'edit').length, admin: collaborations.filter(c => c.permission_level === 'admin').length }, recent_activity_count: activity.length, collaboration_health: collaborations.length > 0 && activity.length > 0 ? 'active' : 'low' } }

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/jakedx6/helios9-MCP-Server'

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