Dissent
Sign inWebMCP…

WebMCP

17 tools. ChatGPT sits at the table.

ChatGPT reads IndieTerminal, writes on the same table you see, and proposes a commit. You confirm it. Tools live on document.modelContext— Sol or Terra, site tools on. The in-page composer uses the same tools.

This browser

checking…

Registered

0

getTools()

Workspace

IndieTerminal

This is the inspector

Native WebMCP shows here: the header reads native, and getTools() lists the same tools ChatGPT discovered. The one ChatGPT prompt lives on the home page — paste it once, then come back to the floor.

What the calls do

  • stress_test_decision

    Wait. Five dissenters write. Weigh it up. Recap each seat in one line.

  • get_current_decision

    Short analysis: scores, flip conditions, next move.

  • confirm_commit

    Ask what to commit. Do not close it until the founder says so.

  • share_decision

    A public /share URL you can open and send.

  • get_company_brain

    Opens Brain.

  • get_decision_history

    Opens History.

  • get_founder_track_record

    Opens Calibration.

Context

Read the same structured workspace the founder is looking at.

  • the_room

    Company and open decision, already in this room.

    no arguments

  • get_company_brain

    Opens Brain. What the company builds, facts vs bets.

    1 argument
    section
    Narrow the response to one section. Defaults to all.
  • get_current_decision

    Structured dissenters plus the floor verdict.

    1 argument
    decision_id
    A past or open decision id, as returned by get_decision_history. Defaults to the decision the founder has open.
  • get_decision_history

    Opens History. Past decisions, newest first.

    2 arguments
    only_with_outcomes
    Return only decisions whose real outcome is known.
    include_record
    Attach the full floor record — openings, defenses and seat replies — to every entry. Defaults to false, which returns summaries only.
  • get_founder_track_record

    Opens Calibration. How this founder has missed.

    2 arguments
    domain
    Filter to a single estimate domain. Defaults to all.
    prediction_status
    Filter the predictions by status. Defaults to all.

Debate

Write objects onto the table: arguments, contradictions, evidence.

  • add_argument

    A structured dissenter claim: position, strength, risk, undo.

    11 arguments
    perspective*
    Which seat is making this argument.
    stance*
    For or against the founder's apparent preference.
    claim*
    One sentence. The assertion itself.
    reasoning*
    Two to four sentences of company-specific support. This is the seat's argument, not a caption.
    basis
    A Company Brain fact or assumption id (fact_… / asm_…) or pattern id this rests on.
    basis_items
    The basis as a structured list, which supersedes the single basis string.
    challenges_id
    Id of the argument this one directly challenges, when it challenges one.
    strength
    How much weight the argument deserves, 0-100. Defaults to 60.
    risk
    Residual risk if this seat is right. Defaults to medium.
    reversibility
    How easy it is to undo the implied move. Defaults to medium.
    decision_id
    Which decision to write on. Defaults to the decision the founder has open.
  • request_evidence

    A checkable ask. Blocks commit until answered.

    3 arguments
    statement*
    The exact thing to check, such as the completion rate for the last 20 signups.
    argument_id
    Id of the argument that hinges on this, when one does.
    decision_id
    Which decision to record it against. Defaults to the decision the founder has open.
  • flag_contradiction

    Two things that cannot both be true.

    4 arguments
    summary*
    One line naming the tension.
    side_a*
    The first belief, quoted from the Company Brain, the history or a defense.
    side_b*
    The second belief, quoted, that conflicts with the first.
    decision_id
    Which decision to flag it on. Defaults to the decision the founder has open.
  • add_risk

    Severity and likelihood. Stays open until resolved.

    6 arguments
    title*
    Short name for the risk.
    detail*
    What goes wrong, and how it would show up.
    severity
    How bad it would be, 1-5. Defaults to 3.
    likelihood
    How likely it is to happen. Defaults to medium.
    perspective
    Which seat is raising the risk.
    decision_id
    Which decision to add it to. Defaults to the decision the founder has open.
  • add_defense

    The founder's pushback, on the record.

    3 arguments
    text*
    What the founder is saying.
    argument_id
    Id of the argument they are answering. Omit when answering the round as a whole.
    decision_id
    Which decision to record it on. Defaults to the decision the founder has open.

Action

Seat the round, propose a commit, take the record with you.

  • stress_test_decision

    Creates the floor, seats five dissenters, returns the verdict.

    3 arguments
    question*
    The decision as a question, for example 'Should I spend the launch budget this month?'
    context
    What is at stake in the founder's words: runway, a date, a number they already have.
    decision_id
    An existing empty decision to fill instead of creating a new one.
  • create_prediction

    One number, a unit, a deadline.

    8 arguments
    statement*
    The prediction in plain words, e.g. '100 qualified users within 30 days'.
    metric*
    What is being counted, e.g. 'qualified signups'.
    expected_value*
    The number the founder expects.
    unit*
    e.g. 'users', 'days', 'GBP'.
    days
    Days until the deadline. Defaults to 30.
    confidence
    0-100. The founder's confidence.
    domain
    Which calibration domain this belongs to.
    decision_id
    Which decision this belongs to. Defaults to the decision the founder has open.
  • commit_decision

    Proposes a commit. Does not commit.

    3 arguments
    option*
    The option id or its exact label, as returned by get_current_decision.
    rationale*
    Why this option, given where the debate landed.
    decision_id
    Which decision to stage. Defaults to the decision the founder has open.
  • confirm_commit

    Founder confirmation. Human-in-the-loop.

    3 arguments
    option
    The option id or exact label to commit to. Defaults to the staged proposal.
    rationale
    Why this option. Defaults to the rationale on the staged proposal.
    decision_id
    Which decision to commit. Defaults to the decision the founder has open.
  • share_decision

    Public link. Optionally Slack or Notion.

    4 arguments
    destination
    Where the record goes: a link only, a Slack message, or a Notion page. Defaults to link.
    channel
    Slack channel name or id, when destination is slack. Defaults to general.
    parent
    Notion parent page title or id to create the page under, when destination is notion.
    decision_id
    Which decision to publish. Defaults to the decision the founder has open.

Outcome

Record what happened and recalibrate the founder's profile.

  • evaluate_prediction

    Score a number against what actually happened.

    2 arguments
    prediction_id*
    The prediction id, as returned by get_founder_track_record.
    actual_value*
    The number that actually happened, in the prediction's unit.
  • record_outcome

    What reality did. Recalibrates the profile.

    4 arguments
    decision_id*
    The decision id, as returned by get_decision_history.
    result*
    How the decision turned out in reality.
    summary*
    What actually happened, in about two sentences.
    lesson*
    The transferable lesson: what would have to be true next time.
Browser notes

ChatGPT desktop: Sol or Terra, site tools on under Settings → Browser. This page never writes to document.modelContext. Native should read native. Chrome 149+ with chrome://flags/#enable-webmcp-testing is the other path.

The two boxes on the floor are HTML forms with toolname. The agent fills them. You press the button. No toolautosubmit.

WebMCP · Dissent