---
title: What's free
description: Which tool calls never cost anything, which refusals happen before any hold, and when a billed "not found" answer is still charged.
---

## Always free

[`search`](/mcp-tools/search), [`search_catalog`](/mcp-tools/search-catalog), [`discover`](/mcp-tools/discover), [`inspect`](/mcp-tools/inspect), [`catalog_overview`](/mcp-tools/catalog-overview), [`balance`](/mcp-tools/balance) and reading your
run history ([`runs_get`](/mcp-tools/runs-get), [`runs_list`](/mcp-tools/runs-list), [`runs_evidence`](/mcp-tools/runs-evidence)) never cost anything. [`discover_smart`](/mcp-tools/discover-smart) is
the one paid search tool, well under a cent per call: ask before you use it.

## Refused for free, $0, no hold

These never reach a provider:

- **[`invalid_input`](/errors/job-refusals#invalid_input)**: a top-level `email`, `url`, `domain` or `phone` value fails the basic
  check on a job run. See [Job inputs](/concepts/job-inputs).
- **[`needs_input`](/errors/job-refusals#needs_input)**: no provider of the job accepts the input you sent.
- **[`unknown_job`](/errors/job-refusals#unknown_job)**: the `job:<id>` you sent does not exist.
- **[`no_supply_for_job`](/errors/job-refusals#no_supply_for_job)**: no endpoint in the catalog does this job.
- **[`no_runnable_provider`](/errors/job-refusals#no_runnable_provider)**: the job exists, but nothing can run for this workspace right now.
- **[`route_capped`](/errors/job-refusals#route_capped)**, **[`route_no_fit`](/errors/job-refusals#route_no_fit)**: a fallback route where no provider was called at all.
  `error.message` reads "No provider was called, so nothing was charged."
- **Any other [`validation_error`](/errors/rest-errors#validation_error)**: a malformed argument.

See [Jobs](/concepts/jobs) and [Fallback](/concepts/fallback) for the full refusal codes.

## Also never charged

A provider error, a 402 on looot's own key, and a rejected call (your input or your own key
refused) are never charged, whether on a direct run or inside a fallback route. A failed run
always settles at $0 with its hold released. See [Holds](/money/holds).

## A billed "not found" is still a charge

Not every miss is free. Some providers bill a flat rate on every call regardless of what they
found, or bill the volume you requested. A "not found" answer from one of those is charged and
listed in `route.summary` like any other attempt. In a `job:<id>` run, providers that only bill on
a found result are tried first, and free rows lead the order; see
[Free first](/concepts/free-first) for exactly how that ordering works and why it never raises
your total.

## Worked example

`job:people.email.find` on `{"email": "jane.doe@example.com"}` with fallback might try a free row
first (charged $0, miss), then a per-call finder that bills regardless (charged $0.0089, hit).
`route.summary` reads `"freefinder: not found ($0). tomba: found ($0.0089). Charged $0.0089."`

<Related />
