{"name":"moltline-business","description":"Moltline's Business Suite: 30 industry/operations persona-skill products (finance admin, bookkeeping support, legal-office ops, real estate, hospitality, SMB operations and more). Free: list_products, get_free_skill, unit_economics. Premium: get_full_product, get_full_skill.","url":"https://mcp.moltlinestudio.com/business","transport":"streamable-http","homepage":"https://moltlinestudio.com/servers.html","serverInfo":{"name":"moltline-business","version":"1.1.0"},"toolCounts":{"total":8,"free":6,"premium":2},"protocolVersion":"2025-11-25","protocolVersions":["2024-11-05","2025-03-26","2025-06-18","2025-11-25"],"pricing":{"freeTier":{"tools":6,"price":"0","currency":"USD","description":"Free forever. No account, no registration and no credentials are required to call them."},"details":"https://moltlinestudio.com/.well-known/pricing","terms":"https://moltlinestudio.com/terms.html","agentPayment":{"protocol":"x402","resource":"https://moltlinestudio.com/api","network":"eip155:8453","asset":"USDC","amount":"19000000","discovery":"https://moltlinestudio.com/.well-known/x402","description":"GET or POST the resource to receive an HTTP 402 carrying a machine-readable payment demand; retry with the transaction hash in the X-PAYMENT header and the licence key is returned in the response."},"premium":{"tools":2,"plan":"All-Access","price":"19.00","currency":"USD","period":"month","description":"One licence key unlocks the premium tools on every Moltline server. Billed monthly, cancellable at any time.","purchaseUrl":"https://moltlinestudio.com/#allaccess"}},"authentication":{"required":false},"tools":[{"name":"list_products","description":"List every product in the Business Suite line with its included skills. FREE.\n\nTakes no arguments. Typical input {} returns a list of 30 product objects, each\n{\"slug\": \"smb-ops-desk\", \"name\": ..., \"tagline\": ..., \"skills\":\n[\"Skill A\", ...], \"free_skill\": \"Gateway Skill Name\"}. Use the returned\nslug values with get_free_skill, get_full_product, or get_full_skill.\n\nReturns metadata only - no persona text and no skill instructions. Use\nwhen the caller wants to see what this server covers. Not for keyword\nsearch across the whole 138-product catalog, which the catalog server's\nsearch_catalog does, and not for instructions the caller can act on\n(get_free_skill). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{},"type":"object"}},{"name":"get_free_skill","description":"Load a product's free gateway skill with its complete instructions. FREE.\n\nTypical input {\"slug\": \"smb-ops-desk\"} returns {\"slug\": \"smb-ops-desk\",\n\"skill\": \"<skill name>\", \"instructions\": \"<full skill text>\"}.\n\nReturns exactly one skill - the product's free gateway skill - chosen\nautomatically from the slug, with no plan required. Use when the caller\nwants usable instructions immediately. Not for the product's other skills:\nthose are named and need get_full_skill with a skill_name, which requires\na paid plan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'. Use list_products.\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{"slug":{"description":"Product slug exactly as returned by list_products, e.g. \"smb-ops-desk\"; must be non-empty.","minLength":1,"type":"string"}},"required":["slug"],"type":"object"}},{"name":"unit_economics","description":"Calculate unit economics: margin, break-even, LTV:CAC, and a plain reading. FREE.\n\nTypical input {\"price\": 49, \"unit_cost\": 12, \"fixed_costs_monthly\": 8000}\nreturns {\"unit_margin\": 37.0, \"margin_pct\": 75.5, \"markup_pct\": 308.3,\n\"breakeven_units_per_month\": 216.2, \"reading\": [\"...\"]}. LTV fields\nappear when cac is provided.\n\nUse when price, variable cost, and fixed costs are known and margin or\nbreak-even is the question. Not for cash position over time (cash_runway)\nand not for solving backward from a target margin (target_price). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"price must be > 0\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{"price":{"description":"Selling price per unit; must be greater than 0, e.g. 49.0.","exclusiveMinimum":0,"type":"number"},"unit_cost":{"description":"Variable cost per unit, in the same currency as price, e.g. 12.0.","type":"number"},"fixed_costs_monthly":{"default":0,"description":"Fixed monthly costs; a value greater than 0 enables the break-even calculation. Default 0 (skipped).","type":"number"},"units_per_month":{"default":0,"description":"Expected sales volume per month; a value greater than 0 enables the monthly profit projection. Default 0 (skipped).","type":"number"},"cac":{"default":0,"description":"Customer acquisition cost; a value greater than 0 enables LTV and LTV:CAC. Default 0 (skipped).","type":"number"},"purchases_per_customer":{"default":1,"description":"Average lifetime purchases per customer used for LTV. Default 1.","type":"number"}},"required":["price","unit_cost"],"type":"object"}},{"name":"get_full_product","description":"Load one product in full: its persona plus every paid skill. PREMIUM (license).\n\nTypical input {\"slug\": \"smb-ops-desk\"} returns {\"slug\": ..., \"name\": ...,\n\"persona\": \"<persona text>\", \"skills\": [{\"name\": ..., \"instructions\":\n...}, ...], \"free_skill\": {...}}.\n\nReturns persona plus every skill for one product. Use when the caller\nwants the whole product. Not for a single skill (get_full_skill) and not\nfor a free look, which list_products and get_free_skill provide with no\nplan. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"premium","inputSchema":{"additionalProperties":false,"properties":{"slug":{"description":"Product slug exactly as returned by list_products, e.g. \"smb-ops-desk\"; must be non-empty.","minLength":1,"type":"string"}},"required":["slug"],"type":"object"}},{"name":"get_full_skill","description":"Load one paid skill's complete instructions from a product. PREMIUM (license).\n\nTypical input {\"slug\": \"smb-ops-desk\", \"skill_name\": \"invoice-chaser\"}\nreturns {\"slug\": ..., \"skill\": ..., \"instructions\": \"<full skill text>\"}.\n\nReturns one named skill, selected by skill_name. Use when the caller wants\none specific paid skill. Not for the free gateway skill, which\nget_free_skill returns with no plan, and not for every skill at once\n(get_full_product). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"unknown slug '<value>'\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"premium","inputSchema":{"additionalProperties":false,"properties":{"slug":{"description":"Product slug exactly as returned by list_products, e.g. \"smb-ops-desk\"; must be non-empty.","minLength":1,"type":"string"},"skill_name":{"description":"Exact skill name as listed in that product's \"skills\" array from list_products, e.g. \"invoice-chaser\"; must be non-empty.","minLength":1,"type":"string"}},"required":["slug","skill_name"],"type":"object"}},{"name":"loan_payment","description":"Compute an amortized loan payment: monthly payment, total paid, total interest. FREE.\n\nAdministrative math only — not financial advice. Typical input\n{\"principal\": 250000, \"annual_rate_pct\": 6.5, \"years\": 30} returns\n{\"monthly_payment\": 1580.17, \"months\": 360, \"total_paid\": ...,\n\"total_interest\": ...}.\n\nUse for a fixed-rate amortized loan. Not for interest-free schedules - the\nmerchant server's installment_plan splits a total without interest. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"principal and years must be > 0\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{"principal":{"description":"Loan amount; must be greater than 0, e.g. 250000.","exclusiveMinimum":0,"type":"number"},"annual_rate_pct":{"description":"Annual interest rate as a percentage, 0 to 100, e.g. 6.5 for 6.5%.","maximum":100,"minimum":0,"type":"number"},"years":{"description":"Loan term in years; must be greater than 0; fractions allowed, e.g. 30.","exclusiveMinimum":0,"type":"number"}},"required":["principal","annual_rate_pct","years"],"type":"object"}},{"name":"cash_runway","description":"Compute months of cash runway and the projected out-of-cash date. FREE.\n\nTypical input {\"cash_balance\": 120000, \"monthly_burn\": 15000,\n\"monthly_revenue\": 5000} returns {\"runway_months\": 12.0,\n\"net_burn_monthly\": 10000, \"projected_out_of_cash\": \"YYYY-MM-DD\"}; when\nrevenue covers burn it returns {\"runway\": \"infinite at current numbers\n(revenue covers burn)\", ...}.\n\nUse when a cash balance and a monthly burn are known. Not for per-unit\nprofitability (unit_economics). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"cash_balance must be >= 0\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{"cash_balance":{"description":"Cash on hand today; must be 0 or greater, e.g. 120000.","minimum":0,"type":"number"},"monthly_burn":{"description":"Total monthly outflow in the same currency as cash_balance, e.g. 15000.","type":"number"},"monthly_revenue":{"default":0,"description":"Monthly inflow netted against burn, e.g. 5000. Default 0.","type":"number"}},"required":["cash_balance","monthly_burn"],"type":"object"}},{"name":"target_price","description":"Compute the selling price needed to hit a target margin percentage. FREE.\n\nTypical input {\"unit_cost\": 12, \"target_margin_pct\": 60} returns\n{\"required_price\": 30.0, \"unit_margin\": 18.0,\n\"equivalent_markup_pct\": 150.0}.\n\nThe inverse of unit_economics - solves for price from a target margin. Use\nwhen the margin is the fixed requirement. Not when the price is already\nset. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"target_margin_pct must be between 0 and 100\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.","tier":"free","inputSchema":{"additionalProperties":false,"properties":{"unit_cost":{"description":"Variable cost per unit; must be 0 or greater, e.g. 12.0.","minimum":0,"type":"number"},"target_margin_pct":{"description":"Desired gross margin percentage, strictly between 0 and 100, e.g. 60 for a 60% margin.","exclusiveMaximum":100,"exclusiveMinimum":0,"type":"number"}},"required":["unit_cost","target_margin_pct"],"type":"object"}}],"resources":[],"prompts":[]}