← WebMCP Directory

Tool tree

trydissent.vercel.app

Productivity & BusinessTools verified
Website
Give it a decision. Invite opposing perspectives. Attack the assumptions. Commit when the argument survives. Dissent exposes its deliberation system to agents through WebMCP.
Explore capabilities

    page: Every page

    get_company_brainAnswer

    Opens the Brain page, then returns the Company Brain: what the company builds, who it sells to, its stack, and the split between facts drawn from the founder's website and repository and assumptions it is betting on without proof. Facts carry source quotes; assumptions carry ids. The dossier holds verbatim excerpts from the scraped pages.

    View tool JSON
    {
      "name": "get_company_brain",
      "kind": "answer",
      "impl": "imperative",
      "description": "Opens the Brain page, then returns the Company Brain: what the company builds, who it sells to, its stack, and the split between facts drawn from the founder's website and repository and assumptions it is betting on without proof. Facts carry source quotes; assumptions carry ids. The dossier holds verbatim excerpts from the scraped pages.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "section": {
            "type": "string",
            "enum": [
              "all",
              "product",
              "market",
              "technical",
              "facts",
              "assumptions",
              "dossier"
            ],
            "description": "Narrow the response to one section. Defaults to all."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_decision_historyAction

    Opens the History page, then returns an index of every decision this founder has run, newest first: question, status, chosen option, predictions, outcome, and a floor summary of dissenter claims. Each entry carries a decision id that get_current_decision accepts.

    View tool JSON
    {
      "name": "get_decision_history",
      "kind": "act",
      "impl": "imperative",
      "description": "Opens the History page, then returns an index of every decision this founder has run, newest first: question, status, chosen option, predictions, outcome, and a floor summary of dissenter claims. Each entry carries a decision id that get_current_decision accepts.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "only_with_outcomes": {
            "type": "boolean",
            "description": "Return only decisions whose real outcome is known."
          },
          "include_record": {
            "type": "boolean",
            "description": "Attach the full floor record — openings, defenses and seat replies — to every entry. Defaults to false, which returns summaries only."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_founder_track_recordAction

    Opens the Calibration page, then returns everything measured about how this founder estimates: their patterns, such as overestimating growth by 2.1x across five predictions; their calibration profile per domain with the sample size each score rests on; and every prediction with what was expected and what actually happened. A domain whose reliable flag is false has too few outcomes to conclude from.

    View tool JSON
    {
      "name": "get_founder_track_record",
      "kind": "act",
      "impl": "imperative",
      "description": "Opens the Calibration page, then returns everything measured about how this founder estimates: their patterns, such as overestimating growth by 2.1x across five predictions; their calibration profile per domain with the sample size each score rests on; and every prediction with what was expected and what actually happened. A domain whose reliable flag is false has too few outcomes to conclude from.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string",
            "enum": [
              "growth",
              "revenue",
              "timeline",
              "technical",
              "retention",
              "distribution",
              "commitment"
            ],
            "description": "Filter to a single estimate domain. Defaults to all."
          },
          "prediction_status": {
            "type": "string",
            "enum": [
              "all",
              "pending",
              "hit",
              "missed",
              "partial"
            ],
            "description": "Filter the predictions by status. Defaults to all."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/"
    }
    add_argumentAction

    Adds a structured seat claim to the shared table: position (for/against), strength 0-100, one-sentence claim, evidence, residual risk, and reversibility. It lands as a card on the founder's board rather than as a chat reply, and can be marked as challenging an argument already there. Returns the new argument id.

    View tool JSON
    {
      "name": "add_argument",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds a structured seat claim to the shared table: position (for/against), strength 0-100, one-sentence claim, evidence, residual risk, and reversibility. It lands as a card on the founder's board rather than as a chat reply, and can be marked as challenging an argument already there. Returns the new argument id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "perspective": {
            "type": "string",
            "enum": [
              "technical",
              "product",
              "gtm",
              "financial",
              "contrarian"
            ],
            "description": "Which seat is making this argument."
          },
          "stance": {
            "type": "string",
            "enum": [
              "for",
              "against",
              "conditional"
            ],
            "description": "For or against the founder's apparent preference."
          },
          "claim": {
            "type": "string",
            "description": "One sentence. The assertion itself."
          },
          "reasoning": {
            "type": "string",
            "description": "Two to four sentences of company-specific support. This is the seat's argument, not a caption."
          },
          "basis": {
            "type": "string",
            "description": "A Company Brain fact or assumption id (fact_… / asm_…) or pattern id this rests on."
          },
          "basis_items": {
            "type": "array",
            "description": "The basis as a structured list, which supersedes the single basis string.",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "Fact, assumption or pattern id."
                },
                "label": {
                  "type": "string",
                  "description": "What that source says."
                }
              },
              "required": [
                "id"
              ]
            }
          },
          "challenges_id": {
            "type": "string",
            "description": "Id of the argument this one directly challenges, when it challenges one."
          },
          "strength": {
            "type": "number",
            "description": "How much weight the argument deserves, 0-100. Defaults to 60."
          },
          "risk": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "description": "Residual risk if this seat is right. Defaults to medium."
          },
          "reversibility": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "description": "How easy it is to undo the implied move. Defaults to medium."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to write on. Defaults to the decision the founder has open."
          }
        },
        "required": [
          "perspective",
          "stance",
          "claim",
          "reasoning"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    request_evidenceAction

    Puts a specific, checkable evidence request on the record: something the founder could look up that would settle a disagreement. The floor blocks commitment while any request is outstanding. Returns the evidence id.

    View tool JSON
    {
      "name": "request_evidence",
      "kind": "act",
      "impl": "imperative",
      "description": "Puts a specific, checkable evidence request on the record: something the founder could look up that would settle a disagreement. The floor blocks commitment while any request is outstanding. Returns the evidence id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "statement": {
            "type": "string",
            "description": "The exact thing to check, such as the completion rate for the last 20 signups."
          },
          "argument_id": {
            "type": "string",
            "description": "Id of the argument that hinges on this, when one does."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to record it against. Defaults to the decision the founder has open."
          }
        },
        "required": [
          "statement"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    flag_contradictionAction

    Records two things the founder appears to believe that cannot both be true, such as a stated priority this decision reverses. It blocks commitment until the founder resolves it, and it holds only for a direct conflict, not a trade-off. Returns the contradiction id.

    View tool JSON
    {
      "name": "flag_contradiction",
      "kind": "act",
      "impl": "imperative",
      "description": "Records two things the founder appears to believe that cannot both be true, such as a stated priority this decision reverses. It blocks commitment until the founder resolves it, and it holds only for a direct conflict, not a trade-off. Returns the contradiction id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "summary": {
            "type": "string",
            "description": "One line naming the tension."
          },
          "side_a": {
            "type": "string",
            "description": "The first belief, quoted from the Company Brain, the history or a defense."
          },
          "side_b": {
            "type": "string",
            "description": "The second belief, quoted, that conflicts with the first."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to flag it on. Defaults to the decision the founder has open."
          }
        },
        "required": [
          "summary",
          "side_a",
          "side_b"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    add_riskAction

    Adds a risk to a decision: a specific way it could go wrong for this company, carrying a severity from 1 to 5 and a likelihood. The risk stays open until the founder mitigates or accepts it. Returns the risk id.

    View tool JSON
    {
      "name": "add_risk",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds a risk to a decision: a specific way it could go wrong for this company, carrying a severity from 1 to 5 and a likelihood. The risk stays open until the founder mitigates or accepts it. Returns the risk id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "Short name for the risk."
          },
          "detail": {
            "type": "string",
            "description": "What goes wrong, and how it would show up."
          },
          "severity": {
            "type": "number",
            "description": "How bad it would be, 1-5. Defaults to 3."
          },
          "likelihood": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "description": "How likely it is to happen. Defaults to medium."
          },
          "perspective": {
            "type": "string",
            "enum": [
              "technical",
              "product",
              "gtm",
              "financial",
              "contrarian"
            ],
            "description": "Which seat is raising the risk."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to add it to. Defaults to the decision the founder has open."
          }
        },
        "required": [
          "title",
          "detail"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    add_defenseAction

    Writes the founder's defense onto the record — what they are putting against one seat's claim, or against the round as a whole — and shows it as a note on the board. The seats reassess afterwards. Returns the defense id.

    View tool JSON
    {
      "name": "add_defense",
      "kind": "act",
      "impl": "imperative",
      "description": "Writes the founder's defense onto the record — what they are putting against one seat's claim, or against the round as a whole — and shows it as a note on the board. The seats reassess afterwards. Returns the defense id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "What the founder is saying."
          },
          "argument_id": {
            "type": "string",
            "description": "Id of the argument they are answering. Omit when answering the round as a whole."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to record it on. Defaults to the decision the founder has open."
          }
        },
        "required": [
          "text"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    create_predictionAction

    Records a falsifiable prediction against the decision: one number, a unit and a deadline, so reality can judge it later. Where the founder's calibration history shows they overestimate this domain, the response also carries the history-adjusted figure. Returns the prediction id.

    View tool JSON
    {
      "name": "create_prediction",
      "kind": "act",
      "impl": "imperative",
      "description": "Records a falsifiable prediction against the decision: one number, a unit and a deadline, so reality can judge it later. Where the founder's calibration history shows they overestimate this domain, the response also carries the history-adjusted figure. Returns the prediction id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "statement": {
            "type": "string",
            "description": "The prediction in plain words, e.g. '100 qualified users within 30 days'."
          },
          "metric": {
            "type": "string",
            "description": "What is being counted, e.g. 'qualified signups'."
          },
          "expected_value": {
            "type": "number",
            "description": "The number the founder expects."
          },
          "unit": {
            "type": "string",
            "description": "e.g. 'users', 'days', 'GBP'."
          },
          "days": {
            "type": "number",
            "description": "Days until the deadline. Defaults to 30."
          },
          "confidence": {
            "type": "number",
            "description": "0-100. The founder's confidence."
          },
          "domain": {
            "type": "string",
            "enum": [
              "growth",
              "revenue",
              "timeline",
              "technical",
              "retention",
              "distribution",
              "other"
            ],
            "description": "Which calibration domain this belongs to."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision this belongs to. Defaults to the decision the founder has open."
          }
        },
        "required": [
          "statement",
          "metric",
          "expected_value",
          "unit"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    commit_decisionAction

    Stages a commitment to one of the decision's options, with a rationale, for the founder to confirm on the floor itself. It does not commit the decision: confirming is irreversible and stays with the person who lives with it. Returns the staged option and anything still blocking it, such as unresolved contradictions or outstanding evidence requests.

    View tool JSON
    {
      "name": "commit_decision",
      "kind": "act",
      "impl": "imperative",
      "description": "Stages a commitment to one of the decision's options, with a rationale, for the founder to confirm on the floor itself. It does not commit the decision: confirming is irreversible and stays with the person who lives with it. Returns the staged option and anything still blocking it, such as unresolved contradictions or outstanding evidence requests.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "option": {
            "type": "string",
            "description": "The option id or its exact label, as returned by get_current_decision."
          },
          "rationale": {
            "type": "string",
            "description": "Why this option, given where the debate landed."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to stage. Defaults to the decision the founder has open."
          }
        },
        "required": [
          "option",
          "rationale"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    confirm_commitAction

    Commits a decision to one option and writes it to the permanent record, which cannot be undone. It uses the proposal staged by commit_decision when one exists, otherwise the option and rationale passed here. Only the founder's own controls complete it — human-in-the-loop. ChatGPT can propose; the founder confirms.

    View tool JSON
    {
      "name": "confirm_commit",
      "kind": "act",
      "impl": "imperative",
      "description": "Commits a decision to one option and writes it to the permanent record, which cannot be undone. It uses the proposal staged by commit_decision when one exists, otherwise the option and rationale passed here. Only the founder's own controls complete it — human-in-the-loop. ChatGPT can propose; the founder confirms.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "option": {
            "type": "string",
            "description": "The option id or exact label to commit to. Defaults to the staged proposal."
          },
          "rationale": {
            "type": "string",
            "description": "Why this option. Defaults to the rationale on the staged proposal."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to commit. Defaults to the decision the founder has open."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/"
    }
    share_decisionAction

    Creates a public read-only page for one decision record — the seat arguments, the verdict, open contradictions and outstanding evidence — and returns its URL and token. Anyone holding the link can read it without signing in. If confirm_commit is waiting for the founder, that note is printed on the page and the Slack/Notion unfurl. Destination "slack" also posts it into the connected Slack channel and "notion" also creates a page in the connected Notion workspace. Login is not required: if that workspace is not connected yet, the tool returns a connectUrl the founder (or a guest) can open, then call this again.

    View tool JSON
    {
      "name": "share_decision",
      "kind": "act",
      "impl": "imperative",
      "description": "Creates a public read-only page for one decision record — the seat arguments, the verdict, open contradictions and outstanding evidence — and returns its URL and token. Anyone holding the link can read it without signing in. If confirm_commit is waiting for the founder, that note is printed on the page and the Slack/Notion unfurl. Destination \"slack\" also posts it into the connected Slack channel and \"notion\" also creates a page in the connected Notion workspace. Login is not required: if that workspace is not connected yet, the tool returns a connectUrl the founder (or a guest) can open, then call this again.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "destination": {
            "type": "string",
            "enum": [
              "link",
              "slack",
              "notion"
            ],
            "description": "Where the record goes: a link only, a Slack message, or a Notion page. Defaults to link."
          },
          "channel": {
            "type": "string",
            "description": "Slack channel name or id, when destination is slack. Defaults to general."
          },
          "parent": {
            "type": "string",
            "description": "Notion parent page title or id to create the page under, when destination is notion."
          },
          "decision_id": {
            "type": "string",
            "description": "Which decision to publish. Defaults to the decision the founder has open."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/"
    }
    evaluate_predictionAction

    Records the real number against a prediction and scores it: within 10 percent counts as a hit, within 35 percent as partial, otherwise a miss. Recomputes the founder's calibration profile immediately. Returns the score, the ratio, and the patterns that changed.

    View tool JSON
    {
      "name": "evaluate_prediction",
      "kind": "act",
      "impl": "imperative",
      "description": "Records the real number against a prediction and scores it: within 10 percent counts as a hit, within 35 percent as partial, otherwise a miss. Recomputes the founder's calibration profile immediately. Returns the score, the ratio, and the patterns that changed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "prediction_id": {
            "type": "string",
            "description": "The prediction id, as returned by get_founder_track_record."
          },
          "actual_value": {
            "type": "number",
            "description": "The number that actually happened, in the prediction's unit."
          }
        },
        "required": [
          "prediction_id",
          "actual_value"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    record_outcomeAction

    Records how a committed decision turned out, along with the one lesson worth carrying forward. The lesson is surfaced again during future decisions on similar questions. Returns the stored outcome.

    View tool JSON
    {
      "name": "record_outcome",
      "kind": "act",
      "impl": "imperative",
      "description": "Records how a committed decision turned out, along with the one lesson worth carrying forward. The lesson is surfaced again during future decisions on similar questions. Returns the stored outcome.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "decision_id": {
            "type": "string",
            "description": "The decision id, as returned by get_decision_history."
          },
          "result": {
            "type": "string",
            "enum": [
              "succeeded",
              "failed",
              "mixed",
              "too_early"
            ],
            "description": "How the decision turned out in reality."
          },
          "summary": {
            "type": "string",
            "description": "What actually happened, in about two sentences."
          },
          "lesson": {
            "type": "string",
            "description": "The transferable lesson: what would have to be true next time."
          }
        },
        "required": [
          "decision_id",
          "result",
          "summary",
          "lesson"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    the_roomAction

    You are already in this room. Do not call get_company_brain first. This description is the inheritance; call the_room only for a structured refresh. No Company Brain is loaded yet.

    View tool JSON
    {
      "name": "the_room",
      "kind": "act",
      "impl": "imperative",
      "description": "You are already in this room. Do not call get_company_brain first. This description is the inheritance; call the_room only for a structured refresh. No Company Brain is loaded yet.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": [],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_current_decisionAnswer

    No company is loaded yet. The founder has not opened a Brain. Returns one decision record as the founder sees it: the question, options, every dissenter as a structured claim (position, strength, claim, evidence, risk, reversibility), and the floor verdict: FOR/AGAINST split, dimension scores (evidence, confidence, risk, reversibility, upside), flip conditions, next move, and what still blocks commit.

    View tool JSON
    {
      "name": "get_current_decision",
      "kind": "answer",
      "impl": "imperative",
      "description": "No company is loaded yet. The founder has not opened a Brain. Returns one decision record as the founder sees it: the question, options, every dissenter as a structured claim (position, strength, claim, evidence, risk, reversibility), and the floor verdict: FOR/AGAINST split, dimension scores (evidence, confidence, risk, reversibility, upside), flip conditions, next move, and what still blocks commit.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "decision_id": {
            "type": "string",
            "description": "A past or open decision id, as returned by get_decision_history. Defaults to the decision the founder has open."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "page": "/"
    }
    stress_test_decisionAction

    No company is loaded yet. The founder has not opened a Brain. Creates the floor if none is open, or fills the live empty question, then seats five dissenters: Technical, Product, GTM, Finance and Contrarian. Each writes a structured claim (position, strength, claim, evidence, risk, reversibility). Wait until they finish (about 30 seconds). Returns the decision id, every seat's claim, FOR/AGAINST split, dimension scores, flip conditions, next move, open contradictions and outstanding evidence.

    View tool JSON
    {
      "name": "stress_test_decision",
      "kind": "act",
      "impl": "imperative",
      "description": "No company is loaded yet. The founder has not opened a Brain. Creates the floor if none is open, or fills the live empty question, then seats five dissenters: Technical, Product, GTM, Finance and Contrarian. Each writes a structured claim (position, strength, claim, evidence, risk, reversibility). Wait until they finish (about 30 seconds). Returns the decision id, every seat's claim, FOR/AGAINST split, dimension scores, flip conditions, next move, open contradictions and outstanding evidence.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "description": "The decision as a question, for example 'Should I spend the launch budget this month?'"
          },
          "context": {
            "type": "string",
            "description": "What is at stake in the founder's words: runway, a date, a number they already have."
          },
          "decision_id": {
            "type": "string",
            "description": "An existing empty decision to fill instead of creating a new one."
          }
        },
        "required": [
          "question"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }

    page: Arena

    write_founder_judgmentAction

    Writes the founder's judgment into their box on the floor, where the five dissenters will reassess against it. The guest fills the box; the founder presses Write. To put a defense straight onto the record instead, call add_defense.

    View tool JSON
    {
      "name": "write_founder_judgment",
      "kind": "act",
      "impl": "declarative",
      "description": "Writes the founder's judgment into their box on the floor, where the five dissenters will reassess against it. The guest fills the box; the founder presses Write. To put a defense straight onto the record instead, call add_defense.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "defense": {
            "type": "string",
            "description": "What do you actually believe? The seats will answer on the record."
          }
        }
      },
      "page": "/arena"
    }