Server definition
- Hash
- sha256:c3edfb5563804de0df8e289b42122a2808b991012e688956ba2406c8a4d6ced9
- What it is
- What a remote MCP server returned when asked what it offers: 8 tools
The blob, as servednamed by its sha256
{
"instructions": "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.",
"tools": [
{
"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.",
"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": "cash_runway",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"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_free_skill",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"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_product",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"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"
},
"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",
"skill_name"
],
"type": "object"
},
"name": "get_full_skill",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_products",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
}
},
"required": [
"result"
],
"type": "object",
"x-fastmcp-wrap-result": true
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"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"
},
"principal": {
"description": "Loan amount; must be greater than 0, e.g. 250000.",
"exclusiveMinimum": 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": "loan_payment",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"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"
},
"unit_cost": {
"description": "Variable cost per unit; must be 0 or greater, e.g. 12.0.",
"minimum": 0,
"type": "number"
}
},
"required": [
"unit_cost",
"target_margin_pct"
],
"type": "object"
},
"name": "target_price",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cac": {
"default": 0,
"description": "Customer acquisition cost; a value greater than 0 enables LTV and LTV:CAC. Default 0 (skipped).",
"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"
},
"price": {
"description": "Selling price per unit; must be greater than 0, e.g. 49.0.",
"exclusiveMinimum": 0,
"type": "number"
},
"purchases_per_customer": {
"default": 1,
"description": "Average lifetime purchases per customer used for LTV. Default 1.",
"type": "number"
},
"unit_cost": {
"description": "Variable cost per unit, in the same currency as price, e.g. 12.0.",
"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"
}
},
"required": [
"price",
"unit_cost"
],
"type": "object"
},
"name": "unit_economics",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:c3edfb5563804de0df8e289b42122a2808b991012e688956ba2406c8a4d6ced9 | sha256sum