structuredargumentation
Analyze and structure complex arguments systematically by creating, critiquing, and synthesizing competing claims. Supports formal reasoning to enhance decision-making and dialectical analysis.
Instructions
A detailed tool for systematic dialectical reasoning and argument analysis. This tool helps analyze complex questions through formal argumentation structures. It facilitates the creation, critique, and synthesis of competing arguments.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| argumentId | No | Optional unique identifier for this argument | |
| argumentType | Yes | ||
| claim | Yes | ||
| conclusion | Yes | ||
| confidence | Yes | Confidence level in this argument (0.0-1.0) | |
| contradicts | No | IDs of arguments this contradicts | |
| nextArgumentNeeded | Yes | Whether another argument is needed in the dialectic | |
| premises | Yes | ||
| respondsTo | No | ID of the argument this directly responds to | |
| strengths | No | Notable strong points of the argument | |
| suggestedNextTypes | No | Suggested types for the next argument | |
| supports | No | IDs of arguments this supports | |
| weaknesses | No | Notable weak points of the argument |
Implementation Reference
- The main handler function that executes the structuredargumentation tool logic: validates input using ArgumentData type, processes and formats the argumentation data, logs formatted output, and returns JSON-structured response or error.public processStructuredArgumentation(input: unknown): { content: Array<{ type: string; text: string }>; isError?: boolean } { try { const validatedData = this.validateInputData(input); const processedData: ArgumentData = { ...validatedData, supports: validatedData.supports || [], contradicts: validatedData.contradicts || [], strengths: validatedData.strengths || [], weaknesses: validatedData.weaknesses || [], suggestedNextTypes: validatedData.suggestedNextTypes || [] }; const formattedOutput = this.formatOutput(processedData); console.error(formattedOutput); return { content: [{ type: "text", text: JSON.stringify({ argumentType: processedData.argumentType, claim: processedData.claim, confidence: processedData.confidence, nextArgumentNeeded: processedData.nextArgumentNeeded, argumentId: processedData.argumentId || `arg-${Date.now()}`, status: 'success' }, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: JSON.stringify({ error: error instanceof Error ? error.message : String(error), status: 'failed' }, null, 2) }], isError: true }; } }
- src/index.ts:825-909 (schema)MCP Tool definition including name, description, and comprehensive inputSchema for structuredargumentation tool used for registration and validation.const STRUCTURED_ARGUMENTATION_TOOL: Tool = { name: "structuredargumentation", description: `A detailed tool for systematic dialectical reasoning and argument analysis. This tool helps analyze complex questions through formal argumentation structures. It facilitates the creation, critique, and synthesis of competing arguments.`, inputSchema: { type: "object", properties: { claim: { type: "string" }, premises: { type: "array", items: { type: "string" } }, conclusion: { type: "string" }, argumentId: { type: "string", description: "Optional unique identifier for this argument", }, argumentType: { type: "string", enum: [ "thesis", "antithesis", "synthesis", "objection", "rebuttal", ], }, confidence: { type: "number", minimum: 0, maximum: 1, description: "Confidence level in this argument (0.0-1.0)", }, respondsTo: { type: "string", description: "ID of the argument this directly responds to", }, supports: { type: "array", items: { type: "string" }, description: "IDs of arguments this supports", }, contradicts: { type: "array", items: { type: "string" }, description: "IDs of arguments this contradicts", }, strengths: { type: "array", items: { type: "string" }, description: "Notable strong points of the argument", }, weaknesses: { type: "array", items: { type: "string" }, description: "Notable weak points of the argument", }, nextArgumentNeeded: { type: "boolean", description: "Whether another argument is needed in the dialectic", }, suggestedNextTypes: { type: "array", items: { type: "string", enum: [ "thesis", "antithesis", "synthesis", "objection", "rebuttal", ], }, description: "Suggested types for the next argument", }, }, required: [ "claim", "premises", "conclusion", "argumentType", "confidence", "nextArgumentNeeded", ], }, };
- src/index.ts:1150-1163 (registration)Tool dispatch/registration in the MCP server's CallToolRequestHandler switch statement, calling the handler with input arguments and formatting response.case "structuredargumentation": { const result = structuredArgumentationServer.processStructuredArgumentation( request.params.arguments ); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; }
- src/models/interfaces.ts:293-318 (schema)TypeScript interface defining the ArgumentData type used for internal validation and typing in the handler.export interface ArgumentData { claim: string; premises: string[]; conclusion: string; argumentId?: string; argumentType: | "thesis" | "antithesis" | "synthesis" | "objection" | "rebuttal"; confidence: number; respondsTo?: string; supports?: string[]; contradicts?: string[]; strengths?: string[]; weaknesses?: string[]; nextArgumentNeeded: boolean; suggestedNextTypes?: ( | "thesis" | "antithesis" | "synthesis" | "objection" | "rebuttal" )[]; }
- src/index.ts:987-987 (registration)Instantiation of the StructuredArgumentationServer class instance used to handle tool calls.const structuredArgumentationServer = new StructuredArgumentationServer();
- src/index.ts:1007-1007 (registration)Registration of the tool in the server's capabilities.tools object.structuredargumentation: STRUCTURED_ARGUMENTATION_TOOL,