# Credits

> What spends credits, what is free, how to price work before paying for it, and how retries are protected.

Source: https://rivomi.com/docs/reference/credits



A credit is one person enriched or one AI judgement (a score, a draft, a brief). Reading data is
free. Sending on LinkedIn uses the sender's daily allowance, not credits.

## The four tools that spend [#the-four-tools-that-spend]

Each description starts with `$` and states its unit cost and the case where nothing is charged.

| Tool                                                    | Charged for                                         | Free case                                                                                                                  |
| ------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `rivomi_run_agent_now` (and `set_agent_state` → `live`) | Each profile actually looked at                     | A run that finds nobody new costs only its searches. A second call while a run is going returns the run already in flight. |
| `rivomi_process_list`                                   | Each profile fetched, each person scored or drafted | People already enriched are skipped unless `rescore` is set, so a second pass costs a fraction of the first                |
| `rivomi_import_prospects`                               | Each engager actually pulled                        | `estimate_only: true` prices the post and imports nothing                                                                  |
| `rivomi_research_prospect`                              | A fraction of a credit per person                   | None. Charged whether or not the brief says anything new.                                                                  |

## Before spending [#before-spending]

1. Call `rivomi_get_workspace`. If `plan.spend_blocked` is `true`, `spend_blocked_reason` says which
   limit is hit, and nothing more will be spent until it resets.
2. For an import, call it with `estimate_only: true` and show the user the price.
3. State the planned `$` calls to the user before making them.

After spending, `rivomi_get_run` on the run returns what it actually cost, line by line.

## Retries [#retries]

A retried call spends nothing twice:

* **MCP:** the server derives an idempotency key from the JSON-RPC request id and the arguments.
  A host that retries a timed-out call with the same id gets the first result back.
* **REST:** send an `Idempotency-Key` header. See [REST API](/tools/rest#idempotency).

Keys live 24 hours.

## Limits [#limits]

Plans cap credits and prospects per month, a daily provider spend, the number of agents, senders
and signals watched, and the largest import. `rivomi_get_workspace.plan.limits` and `plan.used`
give the current values. Going over one returns `402` naming the limit. See
[Errors and limits](/reference/errors).
