{
  "name": "SwingFactor",
  "description": "Work a decision through with SwingFactor: ask a question, build a model of what it depends on — claims, evidence, uncertain numbers and thresholds — challenge it, and find out what could change the choice. Sign in with your SwingFactor account.",
  "transport": "https://mcp.swingfactor.ai/mcp",
  "tools": [
    {
      "name": "list_questions",
      "title": "Your questions",
      "description": "The decisions you are working on in SwingFactor: each workspace you belong to (or just one), every question in it, where each stands — still being asked, drafting, waiting on a person, or ready — and how much waits on a person. Start here: the workspaceId and questionId it gives are what every other tool takes.",
      "annotations": {
        "title": "Your questions",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_question_overview",
      "title": "A question at a glance",
      "description": "One question as it stands: how it is framed, the options it chooses between and the scenarios it is tested under, how big its model is and how much of it a person has decided, whether SwingFactor is drafting it, and any decision recorded on it. Read this before anything else about a question.",
      "annotations": {
        "title": "A question at a glance",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "guide_question",
      "title": "Where a question stands in the method, and what next",
      "description": "Where one question is in SwingFactor’s method and what the method asks next — with the instruction for that stage, worded for a first pass or for adding only what is missing — the other stages not yet met, the seven plain questions answered from the model, and what waits on a person. Call it whenever you are unsure what to do next on a question, and follow it rather than improvising a process.",
      "annotations": {
        "title": "Where a question stands in the method, and what next",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_method",
      "title": "How SwingFactor works a question",
      "description": "SwingFactor’s method, in full: how a question is broken into the claims it depends on, how each claim is judged, the rules no analyst may break, the seven plain questions a decision answers, and what each stage of building a model asks for. Read it once before you help build or challenge a model, and follow it — it is what SwingFactor’s own analyst is taught.",
      "annotations": {
        "title": "How SwingFactor works a question",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_items_to_review",
      "title": "What waits on you",
      "description": "Everything in a workspace’s questions that waits on a person: proposed claims, evidence, ranges and break-evens to accept or reject, open challenges to resolve, claims to re-check, and how far each question is from ready by the stopping rule. Only a person decides these: go through them with the person — read what is waiting, check it against the evidence, say what you found — and record each verdict only on their word (decide, resolve_challenges), or give them the reviewUrl to decide in SwingFactor.",
      "annotations": {
        "title": "What waits on you",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "what_could_change_the_decision",
      "title": "What could change the decision",
      "description": "The decision-critical set, explained: every uncertain number whose accepted ranges cross a break-even the evidence gives (or lie on both sides of one), with the ranges and the threshold that make it so; every number not yet measurable and why; every claim a person left unresolved; every value judgement that is a person’s to make; and every empirical claim that says nothing which would change it. SwingFactor computes this in SQL from what people accepted, and never ranks it — keep it unranked unless it carries a person’s own priorities. Each item says what resolving it takes: find it out, build or test a capability, or decide it.",
      "annotations": {
        "title": "What could change the decision",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_claims",
      "title": "The claims a question rests on",
      "description": "A question’s claims, numbered as the app numbers them. Each claim (proposition) comes as P1, P2…, with its verdict, the strength of its evidence, what resolving it takes and how much accepted evidence supports, contradicts or qualifies it. Filter by verdict, strength, what it takes, or words in it.",
      "annotations": {
        "title": "The claims a question rests on",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_claim",
      "title": "One claim, in full",
      "description": "Everything about one claim: its words and verdict, every piece of evidence for and against it with its source, what it rests on and what rests on it, which options it bears on, the uncertain numbers it turns on with each party’s range and the break-evens, and the challenges raised against it.",
      "annotations": {
        "title": "One claim, in full",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "trace_claim",
      "title": "What rests on a claim, or what it rests on",
      "description": "Follow the accepted dependencies from one claim: downstream, what else would change if it changed; upstream, everything it rests on. Each claim reached comes with the chain that explains how. Computed in SQL from accepted dependencies only.",
      "annotations": {
        "title": "What rests on a claim, or what it rests on",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "compare_options",
      "title": "The options side by side",
      "description": "The same counts for every option — claims bearing on it by verdict, evidence, open challenges, uncertain numbers and ranges, groups of people affected, whether it could be obtained and would last — and, for each threshold that names it, where the accepted ranges lie. SwingFactor never scores, weighs or ranks options and names no winner; neither should you. Say what is established about each, and what is still open.",
      "annotations": {
        "title": "The options side by side",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_frontier",
      "title": "The ways of taking each option",
      "description": "The configuration frontier: each concrete way of taking an option, the questions asked of every one, each one’s answers with their source, and how claims fare under each — survives, weakened, conditional or fails. It compares and ranks nothing; an empty answer is honest, not a gap to fill by guessing.",
      "annotations": {
        "title": "The ways of taking each option",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_challenges",
      "title": "The challenges raised",
      "description": "Every challenge raised against a question’s model, open ones first: what it objects to, who raised it, and — once resolved — what it did to the model and whether it was right. Use it before raising one, so as not to raise it twice.",
      "annotations": {
        "title": "The challenges raised",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "whats_changed",
      "title": "What changed",
      "description": "What changed in a question’s model: every change since a date — what, by whom (or by SwingFactor drafting), and why, as the history keeps it — or, given a snapshot, everything that differs between it and the live model (or a later snapshot). The snapshots are listed either way, so you can compare against one.",
      "annotations": {
        "title": "What changed",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_sources",
      "title": "A question’s sources",
      "description": "The documents and web pages a question is argued from. An uploaded document’s text can be read with read_source; a web page, read it at its address.",
      "annotations": {
        "title": "A question’s sources",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "read_source",
      "title": "Read an uploaded document",
      "description": "The text of a document uploaded to the workspace’s library, as SwingFactor read it out, a part at a time. Cite what it says by its name and where in it; never what you recall of it.",
      "annotations": {
        "title": "Read an uploaded document",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "ask_question",
      "title": "Ask a question",
      "description": "Ask a new question in a workspace, whole: its title, how it is framed, the options it chooses between (two at least), the scenarios it is tested under — or noScenarios, where the person says nothing outside their control could change which option is best — and any web pages to argue it from, which go into the workspace’s library. It is asked as the person: the options and scenarios stand accepted as theirs, and it uses one of the month’s questions. Before calling, work the question out with them as the method asks (get_method: options are defined by what they change, never by their benefits; scenarios are what may happen to whoever chooses, never a choice). Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Ask a question",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "update_question",
      "title": "Change how a question is put",
      "description": "Change how a question is put. Its title or framing, who may read it, its depth (standard or full method), its evidence cut-off, the constraint that limits the investigation (time, money, people, access or a deadline — only under one may open matters be prioritised), whether it examines if each option could be had and kept (availability), or that no scenarios apply. An empty string clears a field. Give the reason: it is kept in the history. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Change how a question is put",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "add_options_and_scenarios",
      "title": "Add options or scenarios",
      "description": "Add options the question chooses between, or scenarios it is tested under, to a question already asked. The person’s, they stand accepted as they name them; a new option reopens what was decided without it in mind. An option is defined by what it changes, never by its benefits, and an intermediate one is not assumed to sit between the others; a scenario is what may happen to whoever chooses, never a choice. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Add options or scenarios",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "add_claims",
      "title": "Add claims",
      "description": "Add claims (propositions) a question depends on — statements whose truth would change which option is preferred — each judged on its own axes: claim type, standing, evidence strength, what resolving it takes (epistemic: find it out; capability: build or test it; normative: a person decides it), horizon, role and, for an empirical or mixed claim, the switching condition that would change it. Say what each rests on (restsOn: claims already in the model, by id) and which options it bears on as a consequence (bearsOn: option ids; set_bearings says more). Fewer, sharper claims; one claim each. Follow the method’s propositions stage (guide_question). Everything it adds arrives proposed: the person decides each (decide), here or in SwingFactor.",
      "annotations": {
        "title": "Add claims",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "add_evidence",
      "title": "Add evidence",
      "description": "Record evidence for or against claims: what it shows in a sentence, the source precisely enough to find (its address, page or table), what kind of source it is, who asserts it and any stake they have, when it was published, and — for a qualification — which way it leans. Cite the primary source, never a page reporting it; record what contradicts a claim as readily as what supports it, and a source’s caveats in both directions; mark with derivesFromId evidence built on other evidence in the model, so it is not counted as independent. Never invent a source, figure, quotation or page. A web page supports a claim once: the same page and point again is refused. Everything it adds arrives proposed: the person decides each (decide), here or in SwingFactor.",
      "annotations": {
        "title": "Add evidence",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "link_claims",
      "title": "Say which claims rest on which",
      "description": "Say that one claim rests on another, and by what mechanism. propositionId rests on dependsOnId, where a change in one would change the truth or relevance of the other. Only real mechanisms; do not connect everything. Everything it adds arrives proposed: the person decides each (decide), here or in SwingFactor.",
      "annotations": {
        "title": "Say which claims rest on which",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "set_bearings",
      "title": "Say which options a claim bears on",
      "description": "For each claim, say every option it bears on — as a consequence of taking it, on whether it could be obtained, or on whether it would last — and, where it bears on one way of taking an option only, which configuration. What is listed replaces what was there. Or, with unchanged, record that the person reconsidered it against every option (an option added later) and what it bears on stands. Test every option as hard as the others. Bearings are the person’s statement, not a proposal: set them with their agreement, or as part of adding claims they asked for.",
      "annotations": {
        "title": "Say which options a claim bears on",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "add_numbers",
      "title": "Add the numbers a claim turns on",
      "description": "Name an uncertain quantity a claim turns on, and add each party’s range for it and any break-even. newVariable names one, or variableId uses one already named; each party’s plausible range is kept apart, never averaged, each with its source and whether it is published, derived (with the arithmetic) or a judgement — and any break-even: a value at which a named consequence changes, only where one genuinely exists (derived with its arithmetic, published, a published criterion, or asserted by a named party and recorded as theirs). A break-even says what occurs below and above it as facts, never which option is better; one comparing options names the pair. Never invent one to make a number testable. Follow the method’s numbers stage. Everything it adds arrives proposed: the person decides each (decide), here or in SwingFactor.",
      "annotations": {
        "title": "Add the numbers a claim turns on",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "set_who_it_affects",
      "title": "Say who the decision affects",
      "description": "Say who the decision affects, and how. Name the groups of people it reaches (newGroups), and say for each claim every group it affects and how: delivery, where how it goes for them decides whether an option can be done at all, or borne, where they bear the consequence and it matters in itself. What is listed for a claim replaces what was there. Refer to a group by its id or its exact label, a new one included. Never fold a people consequence into a financial figure. New groups arrive proposed.",
      "annotations": {
        "title": "Say who the decision affects",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "build_frontier",
      "title": "Map the ways of taking each option",
      "description": "The configuration frontier, for a question at full depth: configurations (concrete ways of taking an option), the questions asked of every configuration (dimensions), each configuration’s answers with their source, and assessments of how a claim fares under a configuration — survives, weakened, conditional (saying on what) or fails — and the frontier questions that form its stated basis. Refer to a configuration or dimension by id or exact label, new ones included. Leave an answer out rather than guess; the frontier compares and ranks nothing. Follow the method’s frontier stage. Everything it adds arrives proposed: the person decides each (decide), here or in SwingFactor.",
      "annotations": {
        "title": "Map the ways of taking each option",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "add_sources",
      "title": "Add sources to argue a question from",
      "description": "Put web pages to a question as its sources: each goes into the workspace’s library (or is found there), and is listed with the question. A page cited as evidence is added to the library anyway; this is for what the question is argued from as a whole.",
      "annotations": {
        "title": "Add sources to argue a question from",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "raise_challenges",
      "title": "Challenge part of the model",
      "description": "Object to a claim, a piece of evidence, a dependency, a range or a break-even, as a sceptic would: where a claim is stated more strongly than its evidence, evidence comes from an interested party with nothing independent, an option is tested less hard than the others, a premise is assumed, two claims are one — and the rest of the method’s audit checklist (guide_question, stage audit). Each objection specific and short, grounded in the model and its sources. Raised in the person’s name; anybody who can read a question may challenge it, and its editors resolve it.",
      "annotations": {
        "title": "Challenge part of the model",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "start_draft",
      "title": "Have SwingFactor draft the model",
      "description": "Start SwingFactor’s own analyst on a question: it works through the method’s stages — options where fewer than two, scenarios, claims, evidence from the sources, research on the web, the frontier at full depth, dependencies, numbers and an audit — adding only what is missing. Everything it writes arrives proposed. One draft at a time; it spends the question’s model budget (get_question_overview shows it), and takes minutes — check on it with get_question_overview. An alternative to building the model yourself, not a step of it.",
      "annotations": {
        "title": "Have SwingFactor draft the model",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "stop_draft",
      "title": "Stop SwingFactor’s draft",
      "description": "Stop a running draft. What it has written is kept, proposed.",
      "annotations": {
        "title": "Stop SwingFactor’s draft",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "decide",
      "title": "Record the person’s verdicts",
      "description": "Record the person’s verdicts on what waits on them. By the kind and id list_items_to_review gives: accept, reject, or reopen as proposed; for a claim (proposition) also qualify (it survives in part) or leave-unresolved (an open matter nobody can settle yet); and still-holds for a claim resting on something that changed, or an assessment whose basis changed, which they have re-checked. A reason travels with each and is kept in the history — give the person’s own. Only accepted things count in what could change the choice. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Record the person’s verdicts",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "resolve_challenges",
      "title": "Say what challenges did to the model",
      "description": "Resolve challenges as the question’s editor: what each did to the model — no-change, qualified, material-change (the model was changed first), or new-uncertainty (one was added first) — in a response kept as the reason, and whether the challenge was right: genuine, partly, or not-genuine. A null outcome reopens one. A challenge found genuine that changed nothing is listed apart, as right but not adopted. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Say what challenges did to the model",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "edit_items",
      "title": "Change what is in the model",
      "description": "Change things already in the model. Each by its kind and id, with only the fields that change (an empty string clears an optional one) and a reason, kept in the history. New words reopen what a person decided — it waits on them again — as in the app. A claim’s switching condition, horizon, review date and, under a constraint, its priority are changed here too. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Change what is in the model",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_items",
      "title": "Take things out of the model",
      "description": "Delete things from the model, each by its kind and id: a claim (with what hangs off it), evidence, a dependency, a variable with its ranges and break-evens, a range, a break-even, an option, a scenario, a group, a configuration or frontier question with its answers, an assessment, a snapshot, a source taken off the question, or a challenge withdrawn. Rejecting keeps a thing on record and is usually what is meant (decide); deleting takes it away. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Take things out of the model",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "freeze_snapshot",
      "title": "Freeze the model under a name",
      "description": "Freeze the question’s model as it stands, under a name — before a meeting, at the end of a round of research — so it can be read as it was and compared with later. A snapshot is preserved, not finished.",
      "annotations": {
        "title": "Freeze the model under a name",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "record_decision",
      "title": "Record the decision",
      "description": "Record what the person decided: the option chosen (and the configuration, where one was), why, and the model as it was — a snapshot frozen now unless one is named. It is history, never rewritten: a mistake is corrected by recording again. SwingFactor computes no winner; the choice and its reasons are entirely the person’s. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Record the decision",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "record_outcome",
      "title": "Record what happened after",
      "description": "Record, after a decision, what happened — and, where it bears on one, whether a claim held: held, partly, did-not-hold or too-early. Never rewritten. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Record what happened after",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    }
  ]
}
