> ## Documentation Index
> Fetch the complete documentation index at: https://docs.krun.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Krun API base URL: https://api.krun.ai. Authenticate server-side with `Authorization: Bearer $KRUN_API_KEY`; never put a Krun API key in browser code.
> Prefer the Python SDK in examples: `pip install krun-ai`, `from krun import Krun`. The TypeScript SDK `@krun-ai/sdk` is not published on npm yet: do not tell users to `npm install` it.
> The only question type is `choice`. `confidence` is the top-1 minus top-2 probability margin, not the probability that the answer is correct. `choice` is null when `abstain` is true.
> Usage reports `input_tokens` only. There are no output tokens.

# Limitations

> Known limitations of Krun One v0 and the Krun API, and how to work with them.

Krun One v0 is an early model in a closed beta. This page lists what it does not do well yet, so you can design around it.

## Tool abstention is advisory

For tool routing (`task_type: "tool"`), `abstain` is a hint, not a validated guarantee. On real requests where none of the offered tools applies, Krun One v0 still picks a tool about 39% of the time at the current threshold (BFCL live irrelevance, see [Benchmarks](/benchmarks#read-these-numbers-carefully)).

**What to do:** keep your own fallback for tool calls, such as argument validation, confirmation before side effects, or a "none of these" path in your agent.

## Abstention is calibrated only for label-only intents

`abstention_status` is `calibrated` only for intent questions whose options have no descriptions. Intent questions with descriptions, and all tool questions, return `advisory`. See [Abstention](/concepts/abstention#abstention-status).

## Confidence is a margin, not a probability of being correct

`confidence` is the top-1 probability minus the top-2 probability. A `confidence` of 0.4 does not mean the answer is correct 40% of the time. See [Confidence and probabilities](/concepts/confidence-and-probabilities).

## Probabilities are calibrated on benchmark data

Calibration was measured on public intent and function-calling benchmarks. Text that differs a lot from that data, such as other languages, very long documents or highly specialized domains, can have less reliable probabilities.

## Three decision primitives, no free text

Krun answers [`choice`](/concepts/primitives/choice), [`noul`](/concepts/primitives/noul) and [`score`](/concepts/primitives/score) questions. It does not generate text and has no multi-label type: for several independent labels, ask one `noul` question per label.

## Noul and score calibration depends on the domain

`noul` probabilities and `score` distributions were calibrated on the propositions and scales Krun One was evaluated on (intents, tool fit, moderation and response-quality properties, harm severity, sentiment). On very different propositions or texts the ranking usually holds, but probabilities can be over-confident. `score` was validated mostly on 5-level scales. Check thresholds on your own data.

## Cold starts affect latency

The model runs on serverless GPUs that scale to zero. After a period without traffic, the first request can take noticeably longer, typically tens of seconds, while the model starts. Use a client timeout of about 70 seconds and see [Production best practices](/guides/production-best-practices#timeouts-and-cold-starts).

## Limits per request

| Limit                     | Value                  |
| ------------------------- | ---------------------- |
| `context` length          | 1 to 8,000 characters  |
| Questions per request     | 1 to 16                |
| Options per question      | 2 to 64                |
| Question id length        | 1 to 100 characters    |
| Option id length          | 1 to 200 characters    |
| Option description length | up to 1,000 characters |
| Request body size         | up to 256 KiB          |

Requests over these limits fail with `400` or `413` before any inference runs. See [Errors](/api-reference/errors).

## Server-side only

Krun is a server-to-server API. There is no browser SDK, and the API does not send CORS headers.
