# create_score (/mcp/create-score)



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

| Input         | Description                                                                                            |
| ------------- | ------------------------------------------------------------------------------------------------------ |
| `data`        | Required. The examples: a JSON array of objects, or CSV text with a header row, each row with `is_bad` |
| `description` | Optional. What the decision is and what `is_bad` means                                                 |
| `api_key`     | `/mcp/keys` only, if the client doesn't send the key as a header                                       |

Returns `model_id`, `job_id` and `request_id`. Creating takes about 5 to 10 minutes: poll [`get_job_status`](/mcp/get-job-status), then call [`score`](/mcp/score) with the `model_id`.

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

Ask the user whether to use **data they already have** or have you **generate sample data**. A score 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/scores#example-data).
