scientificmethod
Apply structured scientific reasoning to analyze questions by guiding through hypothesis testing, variable identification, prediction making, and evidence evaluation.
Instructions
A detailed tool for applying formal scientific reasoning to questions and problems. This tool guides models through the scientific method with structured hypothesis testing. It enforces explicit variable identification, prediction making, and evidence evaluation.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| stage | Yes | ||
| observation | No | ||
| question | No | ||
| hypothesis | No | ||
| experiment | No | ||
| analysis | No | ||
| conclusion | No | ||
| inquiryId | Yes | Unique identifier for this scientific inquiry | |
| iteration | Yes | Current iteration of the scientific process | |
| nextStageNeeded | Yes | Whether another stage is needed in the process |
Implementation Reference
- The `processScientificMethod` method is the core handler for the "scientificmethod" tool. It validates the input, processes the hypothesis and experiment data, formats the output for the console, and returns a JSON-formatted MCP-compliant response.
public processScientificMethod(input: unknown): { content: Array<{ type: string; text: string }>; isError?: boolean } { try { const validatedData = this.validateInputData(input); const processedData: ScientificInquiryData = { ...validatedData, hypothesis: this.processHypothesis(validatedData.hypothesis), experiment: this.processExperiment(validatedData.experiment) }; const formattedOutput = this.formatOutput(processedData); console.error(formattedOutput); return { content: [{ type: "text", text: JSON.stringify({ stage: processedData.stage, inquiryId: processedData.inquiryId, iteration: processedData.iteration, nextStageNeeded: processedData.nextStageNeeded, 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 }; } }