Philosophy

Active

philosophy · v1.0.0

Argument chains, counter-views, and philosophical dialogue scenarios.

Schema Version:
1.0.0

Section Types

IDName
argumentArgument
dialecticDialectic
synthesisSynthesis

MCP Tools

NameDescription
philosophy_create_scenarioCreate a new philosophy (dialectic engine) inquiry scenario in DRAFT status. A philosophy scenario applies a METHOD (extract claims → object with the strongest counter-argument → synthesize the crux) to ANY input: a stack decision, a book, a belief, a design commitment. Returns { scenarioId, slug, title, sectionIds[] }. Slug auto-generated. Required: title. Optional: question (the inquiry's central question), description, tags. seedDefaults=true seeds 3 placeholder sections (argument/dialectic/synthesis = the full motor flow, for manual/web authoring); otherwise the scenario starts EMPTY (no placeholder — build it with philosophy_add_argument / add_dialectic_move / synthesize). Scenarios are ALWAYS DRAFT — publish is a separate explicit action. Caller must be authenticated.
philosophy_add_argumentAppend an `argument` section (structured premises → conclusion) to a philosophy scenario. content is an ArgumentContent: { conclusion: claim, premises: claim[], kind: deductive|inductive|abductive, title?, evaluation? } where each claim is { id (stable kebab, e.g. "stack-maliyeti"), text, origin: extracted|generated|asserted, source?, strength?, status? }. origin is FOUNDATIONAL — mark whether each claim was extracted from the input, generated by the engine, or asserted by the user. Pass null/omit content to use the type default. Accepts scenarioId (cuid or slug) + optional chapterId, key, label. Returns { sectionId, key, order, typeId, versionId, scenarioSlug }. Caller must own the scenario.
philosophy_add_dialectic_moveAdd one move to a dialectic thread — the "object" step of the engine (build the STRONGEST counter-argument, never a strawman). A move is { type: objection|reply|concession|distinction|question, claim, lens?, targets?, id? }: `lens` names the angle (cost/ethics/scale/security…) so one position can be challenged from many; `targets` is the id of the node this move answers (a graph edge); claim carries epistemic origin like everywhere else. If `sectionId` (an existing dialectic section) is given, the move is APPENDED to its thread (new version). If omitted, a NEW dialectic section is created with this as its first move (optionally set `target`/`title`). `move.id` is optional — auto-assigned "m<N>" by thread position if omitted; returned so you can `targets` it next. Returns { sectionId, versionId, version, moveId, threadLength, created }. Caller must own the scenario.
philosophy_synthesizeWrite or update a `synthesis` section — the "synthesize" step: where is the crux (the EXACT point of disagreement), and optionally a decision. content is a full SynthesisContent: { question, crux, verdict?: claim, decision?: { choice, rationale: claim[], reopenIf?, status: open|committed|superseded }, openQuestions?, title? }. Show the crux; do not force a winner — but a resolved verdict IS allowed (not everything is 50/50). A decision can be superseded later (status:"superseded") — section versioning preserves the old one. If `sectionId` (an existing synthesis section) is given it is UPDATED (full replace → new version); otherwise a NEW synthesis section is created. Returns { sectionId, versionId, version, created, contentChanged }. Caller must own the scenario.

Usage Modes

IDName
socraticmodules.philosophy.usageModes.socratic

Example Scenarios

No published scenarios for this module yet.