collaborativereasoning
Simulate expert collaboration to solve complex problems by integrating diverse perspectives and structured reasoning. Facilitates coordinated contributions and consensus-building for informed decision-making.
Instructions
A detailed tool for simulating expert collaboration with diverse perspectives. This tool helps models tackle complex problems by coordinating multiple viewpoints. It provides a framework for structured collaborative reasoning and perspective integration.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| activePersonaId | Yes | ||
| consensusPoints | No | ||
| contributions | Yes | ||
| disagreements | No | ||
| finalRecommendation | No | ||
| iteration | Yes | Current iteration of the collaboration | |
| keyInsights | No | ||
| nextContributionNeeded | Yes | Whether another contribution is needed | |
| nextPersonaId | No | ||
| openQuestions | No | ||
| personas | Yes | ||
| sessionId | Yes | Unique identifier for this collaboration session | |
| stage | Yes | ||
| suggestedContributionTypes | No | ||
| topic | Yes |
Implementation Reference
- The main handler method `processCollaborativeReasoning` that validates input data, formats and logs the output to console, and returns the validated data.public processCollaborativeReasoning(input: unknown): CollaborativeReasoningData { const validatedData = this.validateInputData(input); // Log formatted output to console const formattedOutput = this.formatOutput(validatedData); console.error(formattedOutput); return validatedData; }
- src/models/interfaces.ts:94-124 (schema)TypeScript interface defining the full structure of `CollaborativeReasoningData` used throughout the tool.export interface CollaborativeReasoningData { topic: string; personas: PersonaData[]; contributions: ContributionData[]; stage: | "problem-definition" | "ideation" | "critique" | "integration" | "decision" | "reflection"; activePersonaId: string; nextPersonaId?: string; consensusPoints?: string[]; disagreements?: DisagreementData[]; keyInsights?: string[]; openQuestions?: string[]; finalRecommendation?: string; sessionId: string; iteration: number; suggestedContributionTypes?: ( | "observation" | "question" | "insight" | "concern" | "suggestion" | "challenge" | "synthesis" )[]; nextContributionNeeded: boolean; }
- src/index.ts:266-414 (schema)JSON schema in the MCP Tool definition specifying input validation for the `collaborativereasoning` tool.inputSchema: { type: "object", properties: { topic: { type: "string" }, personas: { type: "array", items: { type: "object", properties: { id: { type: "string" }, name: { type: "string" }, expertise: { type: "array", items: { type: "string" } }, background: { type: "string" }, perspective: { type: "string" }, biases: { type: "array", items: { type: "string" } }, communication: { type: "object", properties: { style: { type: "string" }, tone: { type: "string" }, }, required: ["style", "tone"], }, }, required: [ "id", "name", "expertise", "background", "perspective", "biases", "communication", ], }, }, contributions: { type: "array", items: { type: "object", properties: { personaId: { type: "string" }, content: { type: "string" }, type: { type: "string", enum: [ "observation", "question", "insight", "concern", "suggestion", "challenge", "synthesis", ], }, confidence: { type: "number", minimum: 0, maximum: 1 }, referenceIds: { type: "array", items: { type: "string" }, }, }, required: ["personaId", "content", "type", "confidence"], }, }, stage: { type: "string", enum: [ "problem-definition", "ideation", "critique", "integration", "decision", "reflection", ], }, activePersonaId: { type: "string" }, nextPersonaId: { type: "string" }, consensusPoints: { type: "array", items: { type: "string" } }, disagreements: { type: "array", items: { type: "object", properties: { topic: { type: "string" }, positions: { type: "array", items: { type: "object", properties: { personaId: { type: "string" }, position: { type: "string" }, arguments: { type: "array", items: { type: "string" }, }, }, required: [ "personaId", "position", "arguments", ], }, }, }, required: ["topic", "positions"], }, }, keyInsights: { type: "array", items: { type: "string" } }, openQuestions: { type: "array", items: { type: "string" } }, finalRecommendation: { type: "string" }, sessionId: { type: "string", description: "Unique identifier for this collaboration session", }, iteration: { type: "number", minimum: 0, description: "Current iteration of the collaboration", }, suggestedContributionTypes: { type: "array", items: { type: "string", enum: [ "observation", "question", "insight", "concern", "suggestion", "challenge", "synthesis", ], }, }, nextContributionNeeded: { type: "boolean", description: "Whether another contribution is needed", }, }, required: [ "topic", "personas", "contributions", "stage", "activePersonaId", "sessionId", "iteration", "nextContributionNeeded", ], },
- src/index.ts:261-415 (registration)Definition of the `COLLABORATIVE_REASONING_TOOL` constant which includes name, description, and schema.const COLLABORATIVE_REASONING_TOOL: Tool = { name: "collaborativereasoning", description: `A detailed tool for simulating expert collaboration with diverse perspectives. This tool helps models tackle complex problems by coordinating multiple viewpoints. It provides a framework for structured collaborative reasoning and perspective integration.`, inputSchema: { type: "object", properties: { topic: { type: "string" }, personas: { type: "array", items: { type: "object", properties: { id: { type: "string" }, name: { type: "string" }, expertise: { type: "array", items: { type: "string" } }, background: { type: "string" }, perspective: { type: "string" }, biases: { type: "array", items: { type: "string" } }, communication: { type: "object", properties: { style: { type: "string" }, tone: { type: "string" }, }, required: ["style", "tone"], }, }, required: [ "id", "name", "expertise", "background", "perspective", "biases", "communication", ], }, }, contributions: { type: "array", items: { type: "object", properties: { personaId: { type: "string" }, content: { type: "string" }, type: { type: "string", enum: [ "observation", "question", "insight", "concern", "suggestion", "challenge", "synthesis", ], }, confidence: { type: "number", minimum: 0, maximum: 1 }, referenceIds: { type: "array", items: { type: "string" }, }, }, required: ["personaId", "content", "type", "confidence"], }, }, stage: { type: "string", enum: [ "problem-definition", "ideation", "critique", "integration", "decision", "reflection", ], }, activePersonaId: { type: "string" }, nextPersonaId: { type: "string" }, consensusPoints: { type: "array", items: { type: "string" } }, disagreements: { type: "array", items: { type: "object", properties: { topic: { type: "string" }, positions: { type: "array", items: { type: "object", properties: { personaId: { type: "string" }, position: { type: "string" }, arguments: { type: "array", items: { type: "string" }, }, }, required: [ "personaId", "position", "arguments", ], }, }, }, required: ["topic", "positions"], }, }, keyInsights: { type: "array", items: { type: "string" } }, openQuestions: { type: "array", items: { type: "string" } }, finalRecommendation: { type: "string" }, sessionId: { type: "string", description: "Unique identifier for this collaboration session", }, iteration: { type: "number", minimum: 0, description: "Current iteration of the collaboration", }, suggestedContributionTypes: { type: "array", items: { type: "string", enum: [ "observation", "question", "insight", "concern", "suggestion", "challenge", "synthesis", ], }, }, nextContributionNeeded: { type: "boolean", description: "Whether another contribution is needed", }, }, required: [ "topic", "personas", "contributions", "stage", "activePersonaId", "sessionId", "iteration", "nextContributionNeeded", ], }, };
- src/index.ts:1096-1109 (registration)Dispatch case in `CallToolRequestSchema` handler that routes calls to `collaborativeReasoningServer.processCollaborativeReasoning`.case "collaborativereasoning": { const result = collaborativeReasoningServer.processCollaborativeReasoning( request.params.arguments ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; }