# create_scoring_model (/mcp/create-scoring-model)



Creates a scoring model, as [`POST /v1/scoring_models`](/reference/create-scoring-model). Up to 100 per organization per day.

| Input           | Description                                                                                                                                                        |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `name`          | Required. A few words the user will recognize it by                                                                                                                |
| `criteria`      | What the decision is and what `is_bad` means, in the user's words. Required without `data`; with it, optional context                                              |
| `data`          | Optional. Labeled examples: a JSON array of objects, or CSV text with a header row, each row with `is_bad`                                                         |
| `add_questions` | Optional. The user's own yes/no questions about a record, used alongside Finic's: up to 20, 500 characters each. With `data`, the ones that don't help aren't used |
| `api_key`       | `/mcp/keys` only, if the client doesn't send the key as a header                                                                                                   |

Returns `model_id`, `job_id` and `request_id`. Poll [`get_job_status`](/mcp/get-job-status), then call [`score`](/mcp/score) with the `model_id`. [`get_scoring_model`](/mcp/get-scoring-model) then shows the questions it uses.

* **From criteria alone:** Finic writes the questions and estimates how much each answer moves the score. It takes less than a minute, then scores any record. Calibrate it later with labeled examples or real outcomes to fit it to the user's data.
* **From labeled examples:** calibrated from the start, so more accurate. It takes about two minutes.

## Before calling it with data [#before-calling-it-with-data]

Ask the user whether to use **data they already have** or have you **generate sample data**. A scoring model built on generated data is only for trying Finic out: it isn't calibrated to the company's real fraud distribution.

Good example data is:

* **JSON records about customer identity or events:** sign-ups, logins, payments, transactions.
* **One row per past decision,** with its real outcome as `is_bad` (`true` when bad).
* **Only fields known at the time of the decision:** no later chargebacks, fraud flags or verdicts.
* **Consistent:** the same field names and types in every row, in words, with units.
* **Enough:** 100+ rows with 20+ of each outcome, under 2 MB. Up to 2,000 rows are used.

The records you'll score later must have the same shape. See [Example data](/concepts/scoring-models#example-data).
