model_preview
Preview a proposed product catalog, customer and vendor model without recording it. Unknown prices, variable costs and tax assumptions remain explicit.
What it shows
Preview a proposed business model before anything is recorded: the product catalog, customers, vendors and service map, with known monthly run rates separately by native currency. Ended vendors are excluded from current costs. Unknown amounts, variable pricing and tax annotations remain explicit. Checks plan references, amounts, currencies and chart accounts; writes nothing.
Example MCP App view
The read-only example below uses illustrative demo data and the same report component as the MCP App. These are not your books or the result of the request example.
Inputs
Send the fixed kind and these parameters at the top level of the report request, not inside input.
Required means required within its containing object; an optional parent can be omitted.
| Field | Type | Required | Meaning and accepted values |
|---|---|---|---|
model | model | Yes | The proposal: plans (key, name, cadence, optional price, currency, pricing), customers (name, plan key, since, price when not list), vendors (name, for, cadence, optional amount, currency, status, amount_basis, tax, account, function, drivers). Known amounts are minor-unit integer strings; omit unknown amounts. |
currency | string | No | Ledger currency (default: the functional currency active for the report period). Format: currency. |
Reading the result
Running this report does not change the books. Its description above distinguishes recorded-book summaries from previews based on supplied facts or assumptions. Interpret its totals, grouping, missing-data indicators and pagination using that description. Monetary amounts are integer strings in the reported unit; ratios and assumptions can be fractional numbers. An empty result is not evidence that the business had no activity.
The public OpenAPI contract does not enumerate this report’s result fields. Fetch GET /v1/reports for its live description and parameters, and inspect the returned JSON rather than assuming an output shape.
Example request
{
"kind": "model_preview",
"model": {
"plans": [
{
"key": "pro",
"name": "Pro monthly",
"price": "4900",
"cadence": "month"
}
],
"customers": [
{
"name": "Acme",
"plan": "pro",
"since": "2026-09-01"
}
],
"vendors": [
{
"name": "Render",
"for": "production hosting",
"amount": "2500",
"cadence": "month",
"account": 5210,
"function": "cost_of_revenue",
"drivers": [
"serve API requests"
]
}
]
}
}All reports · Operation and errors · Reusable schemas
Keep credentials out of prompts; rehearse writes only in a disposable sandbox.
Exact request schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"kind": {
"const": "model_preview"
},
"model": {
"type": "object",
"additionalProperties": false,
"required": [
"plans"
],
"properties": {
"company": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"sells": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "What the company sells, to whom, and how it is delivered."
},
"plans": {
"type": "array",
"maxItems": 50,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"key",
"name",
"cadence"
],
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "The plan's id in this proposal; customers name it."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"price": {
"type": "string",
"description": "Minor units as an integer string: 4900 is $49.00."
},
"currency": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Supported ISO currency; defaults to the report currency."
},
"pricing": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Variable or tiered price terms; omit price when unknown."
},
"cadence": {
"enum": [
"month",
"year",
"one_time",
"usage"
],
"description": "When it bills: usage is priced per unit."
},
"includes": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"overage": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"template": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "The template this plan will become."
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
}
}
},
"customers": {
"type": "array",
"maxItems": 500,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"plan"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"plan": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "A plan key."
},
"since": {
"type": "string",
"description": "YYYY-MM-DD."
},
"price": {
"type": "string",
"description": "Only when it differs from the plan's list price."
},
"status": {
"enum": [
"active",
"ended"
]
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
}
}
},
"vendors": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"for",
"cadence"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"for": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"amount": {
"type": "string",
"description": "Per cadence; omit when unknown, never substitute zero."
},
"currency": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Supported ISO currency; defaults to the report currency."
},
"status": {
"enum": [
"active",
"ended"
]
},
"amount_basis": {
"enum": [
"tax_inclusive",
"tax_exclusive"
]
},
"tax": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Observed tax terms; no tax or recoverability is inferred."
},
"cadence": {
"enum": [
"month",
"year",
"one_time",
"usage"
]
},
"paid_by": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"account": {
"type": "integer",
"description": "Expense account code in the chart."
},
"function": {
"enum": [
"cost_of_revenue",
"research_and_development",
"sales_and_marketing",
"general_and_administrative",
"other"
]
},
"drivers": {
"type": "array",
"maxItems": 20,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"description": "The product actions that drive this vendor's cost (the service-call map)."
},
"source": {
"type": "string",
"minLength": 1,
"maxLength": 1000
}
}
}
}
},
"description": "The proposal: plans (key, name, cadence, optional price, currency, pricing), customers (name, plan key, since, price when not list), vendors (name, for, cadence, optional amount, currency, status, amount_basis, tax, account, function, drivers). Known amounts are minor-unit integer strings; omit unknown amounts."
},
"currency": {
"description": "Ledger currency (default: the functional currency active for the report period).",
"type": "string",
"minLength": 1
}
},
"required": [
"kind",
"model"
]
}