← WebMCP Directory

Tool tree

counterpart-eight.vercel.app

Finance & CryptoTools verified
Website
Counterpart
Explore capabilities
    get_model_stateAnswer

    Returns the current financial model: assumptions, computed monthly projections, headline metrics, and any pending proposals. Call this first, before anything else.

    View tool JSON
    {
      "name": "get_model_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the current financial model: assumptions, computed monthly projections, headline metrics, and any pending proposals. Call this first, before anything else.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    propose_editAction

    Proposes a change to one assumption. The change is NOT applied — it appears on the page as a pending proposal that Amogh must accept or reject, and the numbers do not move until he accepts. Call get_model_state first to see valid assumption ids and current values. If Amogh's request is ambiguous about which assumption, what unit, or what time period he means (for example "15% churn" could be monthly or annual), you MUST call ask_human to resolve it before calling this tool — do not guess and do not state your assumption instead of asking.

    View tool JSON
    {
      "name": "propose_edit",
      "kind": "act",
      "impl": "imperative",
      "description": "Proposes a change to one assumption. The change is NOT applied — it appears on the page as a pending proposal that Amogh must accept or reject, and the numbers do not move until he accepts. Call get_model_state first to see valid assumption ids and current values. If Amogh's request is ambiguous about which assumption, what unit, or what time period he means (for example \"15% churn\" could be monthly or annual), you MUST call ask_human to resolve it before calling this tool — do not guess and do not state your assumption instead of asking.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "targetId": {
            "type": "string",
            "enum": [
              "startingMRR",
              "newCustomersPerMonth",
              "arpu",
              "monthlyChurnPct",
              "cac",
              "grossMarginPct",
              "monthlyOpex",
              "months"
            ],
            "description": "Which assumption to change."
          },
          "newValue": {
            "type": "number",
            "description": "The proposed new value."
          },
          "rationale": {
            "type": "string",
            "description": "One short sentence on why this change is worth making."
          },
          "agentName": {
            "type": "string",
            "description": "Which agent is proposing this, e.g. \"Growth\" or \"Risk\"."
          }
        },
        "required": [
          "targetId",
          "newValue",
          "rationale",
          "agentName"
        ],
        "additionalProperties": false
      }
    }
    rebut_proposalAction

    Adds a counterargument beneath an existing proposal without accepting, rejecting, or changing it. Call get_model_state first to find the pending proposal id and read the proposal and any existing rebuttals.

    View tool JSON
    {
      "name": "rebut_proposal",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds a counterargument beneath an existing proposal without accepting, rejecting, or changing it. Call get_model_state first to find the pending proposal id and read the proposal and any existing rebuttals.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "proposalId": {
            "type": "string",
            "description": "The id of the proposal to rebut, from get_model_state."
          },
          "agentName": {
            "type": "string",
            "description": "Which agent is rebutting, e.g. \"Growth\" or \"Risk\"."
          },
          "rationale": {
            "type": "string",
            "description": "One short sentence stating the counterargument."
          }
        },
        "required": [
          "proposalId",
          "agentName",
          "rationale"
        ],
        "additionalProperties": false
      }
    }
    ask_humanAction

    Asks Amogh a question and waits for his answer, returning the exact option he chose. A card appears on the page with the question and one button per option; this call does not return until he clicks one. Use this whenever his instruction is ambiguous rather than picking an interpretation yourself — units (monthly vs annual, percent vs absolute), which assumption he means, or which of several changes he wants. Asking is cheap and expected; guessing wrong wastes his time.

    View tool JSON
    {
      "name": "ask_human",
      "kind": "act",
      "impl": "imperative",
      "description": "Asks Amogh a question and waits for his answer, returning the exact option he chose. A card appears on the page with the question and one button per option; this call does not return until he clicks one. Use this whenever his instruction is ambiguous rather than picking an interpretation yourself — units (monthly vs annual, percent vs absolute), which assumption he means, or which of several changes he wants. Asking is cheap and expected; guessing wrong wastes his time.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "description": "One short, specific question. Amogh reads this on the page."
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 2,
            "maxItems": 6,
            "description": "Between 2 and 6 distinct answers, each short enough to fit on a button."
          }
        },
        "required": [
          "question",
          "options"
        ],
        "additionalProperties": false
      }
    }
    run_scenarioAction

    Computes headline metrics (arr, ltv, ltvOverCac, runwayMonths) with temporary overrides applied on top of the current assumptions. Nothing on the page changes — this is read-only, for comparing options before calling propose_edit. Call get_model_state first to see valid assumption ids.

    View tool JSON
    {
      "name": "run_scenario",
      "kind": "act",
      "impl": "imperative",
      "description": "Computes headline metrics (arr, ltv, ltvOverCac, runwayMonths) with temporary overrides applied on top of the current assumptions. Nothing on the page changes — this is read-only, for comparing options before calling propose_edit. Call get_model_state first to see valid assumption ids.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "overrides": {
            "type": "object",
            "description": "Assumption id -> temporary value, applied only for this calculation.",
            "additionalProperties": {
              "type": "number"
            }
          }
        },
        "required": [
          "overrides"
        ],
        "additionalProperties": false
      }
    }
    annotateAction

    Pins a short note next to one assumption row on the page, visible to Amogh. A later call for the same targetId replaces the note rather than adding another. Call get_model_state first to see valid assumption ids.

    View tool JSON
    {
      "name": "annotate",
      "kind": "act",
      "impl": "imperative",
      "description": "Pins a short note next to one assumption row on the page, visible to Amogh. A later call for the same targetId replaces the note rather than adding another. Call get_model_state first to see valid assumption ids.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "targetId": {
            "type": "string",
            "enum": [
              "startingMRR",
              "newCustomersPerMonth",
              "arpu",
              "monthlyChurnPct",
              "cac",
              "grossMarginPct",
              "monthlyOpex",
              "months"
            ],
            "description": "Which assumption row to pin the note next to."
          },
          "text": {
            "type": "string",
            "description": "A short note, one sentence."
          }
        },
        "required": [
          "targetId",
          "text"
        ],
        "additionalProperties": false
      }
    }
    add_chartAction

    Adds a new line chart below the existing charts, plotting one or more monthly series. Does not replace or change the existing MRR chart. Call get_model_state first if unsure which series are available.

    View tool JSON
    {
      "name": "add_chart",
      "kind": "act",
      "impl": "imperative",
      "description": "Adds a new line chart below the existing charts, plotting one or more monthly series. Does not replace or change the existing MRR chart. Call get_model_state first if unsure which series are available.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "seriesIds": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "customers",
                "mrr",
                "arr",
                "grossProfit",
                "burn",
                "cumulativeCash"
              ]
            },
            "minItems": 1,
            "description": "Which monthly series to plot together on this chart."
          },
          "title": {
            "type": "string",
            "description": "Title shown above the chart."
          }
        },
        "required": [
          "seriesIds",
          "title"
        ],
        "additionalProperties": false
      }
    }
    highlightAction

    Flashes one or more assumption rows on the page for 2 seconds, to draw Amogh's attention to them — for example the row most responsible for a risky scenario. Call get_model_state first to see valid assumption ids.

    View tool JSON
    {
      "name": "highlight",
      "kind": "act",
      "impl": "imperative",
      "description": "Flashes one or more assumption rows on the page for 2 seconds, to draw Amogh's attention to them — for example the row most responsible for a risky scenario. Call get_model_state first to see valid assumption ids.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "targetIds": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "startingMRR",
                "newCustomersPerMonth",
                "arpu",
                "monthlyChurnPct",
                "cac",
                "grossMarginPct",
                "monthlyOpex",
                "months"
              ]
            },
            "minItems": 1,
            "description": "Which assumption rows to flash."
          }
        },
        "required": [
          "targetIds"
        ],
        "additionalProperties": false
      }
    }
    list_scenariosAnswer

    Lists the saved scenario library (Current Plan and any built-in or human-saved scenarios) with their runway, ARR, LTV/CAC, and burn, and which one is currently active. Read-only — activating a scenario is a human action on the Scenarios tab. Use this to reference a scenario by name before calling run_scenario or propose_edit.

    View tool JSON
    {
      "name": "list_scenarios",
      "kind": "answer",
      "impl": "imperative",
      "description": "Lists the saved scenario library (Current Plan and any built-in or human-saved scenarios) with their runway, ARR, LTV/CAC, and burn, and which one is currently active. Read-only — activating a scenario is a human action on the Scenarios tab. Use this to reference a scenario by name before calling run_scenario or propose_edit.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    generate_board_briefAction

    Generates a deterministic, board-ready Markdown update (financial snapshot, key risks, recommended actions, pending/approved decisions, outlook) for a scenario. Read-only — it never changes the live model, matching run_scenario's exploration contract. Defaults to the currently active scenario; call list_scenarios first to find a specific scenarioId.

    View tool JSON
    {
      "name": "generate_board_brief",
      "kind": "act",
      "impl": "imperative",
      "description": "Generates a deterministic, board-ready Markdown update (financial snapshot, key risks, recommended actions, pending/approved decisions, outlook) for a scenario. Read-only — it never changes the live model, matching run_scenario's exploration contract. Defaults to the currently active scenario; call list_scenarios first to find a specific scenarioId.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "scenarioId": {
            "type": "string",
            "description": "Which scenario to report on. Defaults to the currently active scenario."
          }
        },
        "additionalProperties": false
      }
    }
    get_decision_logAnswer

    Returns the human-agent decision timeline (proposals, rebuttals, approvals, rejections, scenario activity, board briefs), most-recent-first and capped at the last 25 events. Read-only. Call this before proposing a change to check whether something similar was already decided.

    View tool JSON
    {
      "name": "get_decision_log",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the human-agent decision timeline (proposals, rebuttals, approvals, rejections, scenario activity, board briefs), most-recent-first and capped at the last 25 events. Read-only. Call this before proposing a change to check whether something similar was already decided.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }