{"name":"com.moltlinestudio/business","slug":"moltlinestudio-business","title":"Moltline Business Suite","description":"30 finance, bookkeeping, legal-ops and SMB operations skill products. 6 of 8 tools free.","url":"https://mcp.market/server/moltlinestudio-business","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"ecommerce","tags":["ecommerce","finance"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-19T15:00:29.000Z","license":"MIT"},"uptime":{"percent":100,"checks":3,"ok":3,"last_checked_at":"2026-09-20T03:21:07.612Z","last_ok_at":"2026-09-20T03:21:07.612Z","latency_ms":355},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/GarphenGate/moltline-mcp","website":"https://moltlinestudio.com/servers.html#business","version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://mcp.moltlinestudio.com/business"}],"packages":[],"tools":[{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"],"additionalProperties":false}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"],"additionalProperties":false}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"],"additionalProperties":false}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"],"additionalProperties":false}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"],"additionalProperties":false}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"],"additionalProperties":false}},{"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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"],"additionalProperties":false}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-09-20T00:23:57.396Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:23:57.399Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 344ms"]},"poisoning":{"score":15,"max":15,"notes":["8 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":5,"max":10,"notes":["namespace and repository owner differ","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.moltlinestudio.com/business","reachable":true,"authRequired":false,"latencyMs":344,"serverInfo":{"name":"moltline-business","version":"1.1.0"}}],"packages":[],"repo":{"found":true,"owner":"GarphenGate","repo":"moltline-mcp","archived":false,"pushedAt":"2026-09-19T15:00:29Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/316633241?v=4","ownerCreatedAt":"2026-08-13T15:17:26Z","license":"MIT"},"icon":{"url":"https://moltlinestudio.com/icon-192.png","source":"registry","width":192,"height":192},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-19T15:00:29.000Z","score":23}}}},"grade_history":[],"reviews":[]}