Dry Run

Monte Carlo cash-flow simulator for a small services business: odds of running short, and why.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
70%
命名品質
87%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~3,619Token(工具定義)
~12.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.83%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "dry-run": {
      "url": "https://mcp.modernmustardseed.com/dry-run"
    }
  }
}

遠端端點

https://mcp.modernmustardseed.com/dry-runstreamable-http

它能做什麼

工具清單

工具(3)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢simulate_cash_year(preset, name, start_cash, credit_line, credit_drawn, ...)

Simulate the next 52 weeks of a small services business 10,000 times (Monte Carlo) and report the chance it runs short of money, the week that is most likely to happen, reachable money (bank balance plus unused credit) week by week at the 10th, 50th and 90th percentile, the drivers that separated the futures that ran short from the ones that survived, and the profit the business makes at its own averages. Start from a trade preset (excavation, plumbing, hvac, landscaping, roofing, or general) and override any input: cash, credit line, money owed to the business, work already sold, crews and their weekly cost, overhead, owner draw, monthly bills, enquiries, close rate, seasonality, job types with value, materials, deposit and payment terms, bad debt, tax, and random setbacks. Money is in dollars and rates are fractions (0.3 is 30 percent). The same inputs and seed always return the same answer. Pure arithmetic: no network access, nothing stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "preset": {
      "default": "general",
      "description": "Starting template: excavation, plumbing, hvac, landscaping, roofing, or general for any other small services business. Every field below overrides it. Default general.",
      "type": "string",
      "enum": [
        "excavation",
        "plumbing",
        "hvac",
        "landscaping",
        "roofing",
        "general"
      ]
    },
    "name": {
      "description": "Business name, used only to label the result.",
      "type": "string",
      "maxLength": 120
    },
    "start_cash": {
      "description": "Money in the bank on the day the year starts, in dollars.",
      "type": "number",
      "minimum": -10000000,
      "maximum": 100000000
    },
    "credit_line": {
      "description": "Size of the line of credit, in dollars. 0 for none.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "credit_drawn": {
      "description": "How much of the line is already drawn, in dollars.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "credit_apr": {
      "description": "Annual interest on the drawn balance, as a fraction. 0.11 is 11 percent.",
      "type": "number",
      "minimum": 0,
      "maximum": 0.6
    },
    "opening_receivables": {
      "description": "Work already invoiced and not yet paid on day one, in dollars.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "opening_backlog_weeks": {
      "description": "Crew-weeks of work already sold and waiting to start.",
      "type": "number",
      "minimum": 0,
      "maximum": 104
    },
    "crews": {
      "description": "Crews (or technicians, or production units) working in parallel. One crew delivers one crew-week a week.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "crew_cost_weekly": {
      "description": "Fully loaded weekly cost of one crew: wages, burden, fuel, vehicle.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "overhead_weekly": {
      "description": "Weekly overhead that runs whether or not anyone works: office, software, admin wages.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "owner_draw_weekly": {
      "description": "What the owner takes out each week.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "fixed_costs": {
      "description": "Monthly fixed bills such as rent, insurance and equipment notes. Replaces the preset list.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000,
            "description": "Monthly amount in dollars."
          },
          "day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 28,
            "description": "Day of the month it leaves the account, 1 to 28."
          }
        },
        "required": [
          "label",
          "amount",
          "day"
        ]
      }
    },
    "leads_per_week": {
      "description": "Enquiries in an average week before seasonality.",
      "type": "number",
      "minimum": 0,
      "maximum": 500
    },
    "leads_cv": {
      "description": "Week to week spread of enquiries. Default 0.35.",
      "type": "number",
      "minimum": 0.01,
      "maximum": 2
    },
    "close_rate": {
      "description": "Share of enquiries that become jobs, as a fraction.",
      "type": "number",
      "minimum": 0.01,
      "maximum": 1
    },
    "seasonality": {
      "description": "Twelve multipliers on enquiry volume, January first. 1 is an average month.",
      "minItems": 12,
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "number",
        "minimum": 0,
        "maximum": 5
      }
    },
    "job_types": {
      "description": "The kinds of work sold. Replaces the preset list.",
      "minItems": 1,
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60,
            "description": "What the job is called, for example \"Service call\"."
          },
          "share": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "description": "Relative share of jobs won that are this kind. Shares are normalised, so 6 and 2 means three of these for every one of the other."
          },
          "value": {
            "type": "number",
            "minimum": 1,
            "maximum": 10000000,
            "description": "Average invoice for this job, in dollars."
          },
          "value_cv": {
            "default": 0.4,
            "description": "Spread of the invoice, 0.4 means give or take 40 percent. Default 0.4.",
            "type": "number",
            "minimum": 0.01,
            "maximum": 2
          },
          "crew_weeks": {
            "type": "number",
            "minimum": 0.01,
            "maximum": 200,
            "description": "Crew-weeks of capacity one job uses. 0.5 is half a crew for a week."
          },
          "crew_weeks_cv": {
            "default": 0.3,
            "description": "Spread of the work per job. Default 0.3.",
            "type": "number",
            "minimum": 0.01,
            "maximum": 2
          },
          "materials_pct": {
            "type": "number",
            "minimum": 0,
            "maximum": 0.95,
            "description": "Materials and subcontractors as a fraction of the invoice, paid when the job starts."
          },
          "deposit_pct": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Deposit taken when the job is won, as a fraction of the invoice. 1 means paid in full up front."
          },
          "terms_days": {
            "type": "number",
            "minimum": 0,
            "maximum": 180,
            "description": "Average days until the balance is paid after the job is done. 0 means paid on completion."
          }
        },
        "required": [
          "name",
          "share",
          "value",
          "crew_weeks",
          "materials_pct",
          "deposit_pct",
          "terms_days"
        ]
      }
    },
    "collection_shape": {
      "description": "How disciplined customers are about paying on time: 2 is ragged with a long tail of late payers, 6 is disciplined.",
      "type": "number",
      "minimum": 0.5,
      "maximum": 20
    },
    "bad_debt_rate": {
      "description": "Share of invoiced balances never collected, as a fraction.",
      "type": "number",
      "minimum": 0,
      "maximum": 0.5
    },
    "tax_rate": {
      "description": "Share of profit set aside for tax, paid quarterly.",
      "type": "number",
      "minimum": 0,
      "maximum": 0.6
    },
    "surprises": {
      "description": "Random setbacks such as a machine breakdown or someone quitting. Replaces the preset list.",
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          "weekly_prob": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Chance it happens in any given week, for example 0.03."
          },
          "cost": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000,
            "description": "What it costs each time, in dollars."
          },
          "capacity_loss": {
            "type": "number",
            "minimum": 0,
            "maximum": 50,
            "description": "Crew-weeks of capacity lost each time it happens."
          }
        },
        "required": [
          "label",
          "weekly_prob",
          "cost",
          "capacity_loss"
        ]
      }
    },
    "start_month": {
      "description": "Month the simulated year starts, 1 for January. Default: the current month.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "seed": {
      "description": "Seed for the random draws. The same inputs and seed always return the same answer. Default \"dry-run\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rank_levers(preset, name, start_cash, credit_line, credit_drawn, ...)

Test nine single changes a small business owner can make and rank them by how much each lowers the chance of running short of money in the next 52 weeks, with the change in year-end money as a tiebreak. The levers: take a third up front, take 15 days off payment terms, raise prices 5 percent, take a fifth less owner draw for six months, cut overhead 10 percent, raise the credit line by half, run one crew lighter, add a crew, and buy three more enquiries a week. Each lever and the baseline run 3,000 simulated years with the same seed, so the difference is the lever and not the luck. Takes the same business description as a cash year simulation: a preset plus any overridden inputs. Pure arithmetic: no network access, nothing stored.

輸入結構描述

{
  "type": "object",
  "properties": {
    "preset": {
      "default": "general",
      "description": "Starting template: excavation, plumbing, hvac, landscaping, roofing, or general for any other small services business. Every field below overrides it. Default general.",
      "type": "string",
      "enum": [
        "excavation",
        "plumbing",
        "hvac",
        "landscaping",
        "roofing",
        "general"
      ]
    },
    "name": {
      "description": "Business name, used only to label the result.",
      "type": "string",
      "maxLength": 120
    },
    "start_cash": {
      "description": "Money in the bank on the day the year starts, in dollars.",
      "type": "number",
      "minimum": -10000000,
      "maximum": 100000000
    },
    "credit_line": {
      "description": "Size of the line of credit, in dollars. 0 for none.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "credit_drawn": {
      "description": "How much of the line is already drawn, in dollars.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "credit_apr": {
      "description": "Annual interest on the drawn balance, as a fraction. 0.11 is 11 percent.",
      "type": "number",
      "minimum": 0,
      "maximum": 0.6
    },
    "opening_receivables": {
      "description": "Work already invoiced and not yet paid on day one, in dollars.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "opening_backlog_weeks": {
      "description": "Crew-weeks of work already sold and waiting to start.",
      "type": "number",
      "minimum": 0,
      "maximum": 104
    },
    "crews": {
      "description": "Crews (or technicians, or production units) working in parallel. One crew delivers one crew-week a week.",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "crew_cost_weekly": {
      "description": "Fully loaded weekly cost of one crew: wages, burden, fuel, vehicle.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "overhead_weekly": {
      "description": "Weekly overhead that runs whether or not anyone works: office, software, admin wages.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "owner_draw_weekly": {
      "description": "What the owner takes out each week.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "fixed_costs": {
      "description": "Monthly fixed bills such as rent, insurance and equipment notes. Replaces the preset list.",
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000,
            "description": "Monthly amount in dollars."
          },
          "day": {
            "type": "integer",
            "minimum": 1,
            "maximum": 28,
            "description": "Day of the month it leaves the account, 1 to 28."
          }
        },
        "required": [
          "label",
          "amount",
          "day"
        ]
      }
    },
    "leads_per_week": {
      "description": "Enquiries in an average week before seasonality.",
      "type": "number",
      "minimum": 0,
      "maximum": 500
    },
    "leads_cv": {
      "description": "Week to week spread of enquiries. Default 0.35.",
      "type": "number",
      "minimum": 0.01,
      "maximum": 2
    },
    "close_rate": {
      "description": "Share of enquiries that become jobs, as a fraction.",
      "type": "number",
      "minimum": 0.01,
      "maximum": 1
    },
    "seasonality": {
      "description": "Twelve multipliers on enquiry volume, January first. 1 is an average month.",
      "minItems": 12,
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "number",
        "minimum": 0,
        "maximum": 5
      }
    },
    "job_types": {
      "description": "The kinds of work sold. Replaces the preset list.",
      "minItems": 1,
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60,
            "description": "What the job is called, for example \"Service call\"."
          },
          "share": {
            "type": "number",
            "minimum": 0,
            "maximum": 1000,
            "description": "Relative share of jobs won that are this kind. Shares are normalised, so 6 and 2 means three of these for every one of the other."
          },
          "value": {
            "type": "number",
            "minimum": 1,
            "maximum": 10000000,
            "description": "Average invoice for this job, in dollars."
          },
          "value_cv": {
            "default": 0.4,
            "description": "Spread of the invoice, 0.4 means give or take 40 percent. Default 0.4.",
            "type": "number",
            "minimum": 0.01,
            "maximum": 2
          },
          "crew_weeks": {
            "type": "number",
            "minimum": 0.01,
            "maximum": 200,
            "description": "Crew-weeks of capacity one job uses. 0.5 is half a crew for a week."
          },
          "crew_weeks_cv": {
            "default": 0.3,
            "description": "Spread of the work per job. Default 0.3.",
            "type": "number",
            "minimum": 0.01,
            "maximum": 2
          },
          "materials_pct": {
            "type": "number",
            "minimum": 0,
            "maximum": 0.95,
            "description": "Materials and subcontractors as a fraction of the invoice, paid when the job starts."
          },
          "deposit_pct": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Deposit taken when the job is won, as a fraction of the invoice. 1 means paid in full up front."
          },
          "terms_days": {
            "type": "number",
            "minimum": 0,
            "maximum": 180,
            "description": "Average days until the balance is paid after the job is done. 0 means paid on completion."
          }
        },
        "required": [
          "name",
          "share",
          "value",
          "crew_weeks",
          "materials_pct",
          "deposit_pct",
          "terms_days"
        ]
      }
    },
    "collection_shape": {
      "description": "How disciplined customers are about paying on time: 2 is ragged with a long tail of late payers, 6 is disciplined.",
      "type": "number",
      "minimum": 0.5,
      "maximum": 20
    },
    "bad_debt_rate": {
      "description": "Share of invoiced balances never collected, as a fraction.",
      "type": "number",
      "minimum": 0,
      "maximum": 0.5
    },
    "tax_rate": {
      "description": "Share of profit set aside for tax, paid quarterly.",
      "type": "number",
      "minimum": 0,
      "maximum": 0.6
    },
    "surprises": {
      "description": "Random setbacks such as a machine breakdown or someone quitting. Replaces the preset list.",
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          },
          "weekly_prob": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "Chance it happens in any given week, for example 0.03."
          },
          "cost": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000000,
            "description": "What it costs each time, in dollars."
          },
          "capacity_loss": {
            "type": "number",
            "minimum": 0,
            "maximum": 50,
            "description": "Crew-weeks of capacity lost each time it happens."
          }
        },
        "required": [
          "label",
          "weekly_prob",
          "cost",
          "capacity_loss"
        ]
      }
    },
    "start_month": {
      "description": "Month the simulated year starts, 1 for January. Default: the current month.",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "seed": {
      "description": "Seed for the random draws. The same inputs and seed always return the same answer. Default \"dry-run\".",
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_presets

List the six built-in business presets (excavation and septic, plumbing and drain, heating and cooling, landscaping and snow, roofing, and a general small services business) with every default input in the exact field names a simulation accepts, and the revenue, costs and profit each makes at its own averages. Static reference: no network access.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本3 個工具