# Introduction

Source: https://docs.temprl.org/

> Simo answers typed questions about text, images and video with a calibrated probability for every answer. Learn what it does and how to start.

Simo answers typed questions about a situation (text, images or video) with a **calibrated probability for every possible answer**. When acting needs a value, it fills that in too. One request reads the situation once and answers every question you ask about it.

**Python**

```python
from simoai import Client, Noul

c = Client()   # reads $SIMO_API_KEY
r = c.ask("The customer says the parcel arrived broken and wants their money back.",
          {"refund": Noul("The customer asks for a refund")})

r["refund"].noul   # 0.99: the probability that the statement is true
r.cost_usd         # what the request cost
```

**cURL**

```bash
curl https://api.temprl.org/v1/ask \
  -H "Authorization: Bearer $SIMO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "simo-1-pro",
       "state": "The customer says the parcel arrived broken and wants their money back.",
       "questions": {"refund": {"type": "noul", "instructions": "The customer asks for a refund"}}}'
```

**JavaScript**

```javascript
const res = await fetch("https://api.temprl.org/v1/ask", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.SIMO_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    model: "simo-1-pro",
    state: "The customer says the parcel arrived broken and wants their money back.",
    questions: { refund: { type: "noul", instructions: "The customer asks for a refund" } },
  }),
});
const { answers } = await res.json();
console.log(answers.refund.noul); // 0.99
```

## Why calibrated answers

A language model's text answer tells you *what* it thinks, not *how sure it is*. Simo returns a probability you can act on: when it says 0.8, it is right about 80% of the time. A threshold in your code means what it says.

```python
if r["refund"].noul > 0.95:
    auto_refund()          # confident: act
elif r["refund"].noul > 0.6:
    ask_a_person()         # unsure: escalate
```

## Start here

- [Quickstart](https://docs.temprl.org/guide/quickstart): Sign up, get a key, install the SDK and make your first request.
- [Question types](https://docs.temprl.org/guide/question-types): Noul, Choice and Score for decisions. Fill, Extract and Locate for values.
- [Simo-1 Pro](https://docs.temprl.org/models): What the models are, what they cost and their limits.
- [HTTP API](https://docs.temprl.org/api): One endpoint, POST /v1/ask. Call it from any language.
- [Use cases](https://docs.temprl.org/examples): Support triage, claims, browser agents, extraction and more.
- [Agents](https://docs.temprl.org/guide/agents): Pick the next tool call with a probability, and stop when unsure.

## What you can ask

| Kind | Types | You get back |
|---|---|---|
| Decisions | `Noul` (yes/no), `Choice` (one of several), `Score` (a level on a scale) | A calibrated probability for every possible answer |
| Reads (preview) | `Fill` (write a value), `Extract` (copy it from the input), `Locate` (find it in an image) | A typed value: text, number, list or box coordinates |

Ten questions about one input cost little more than one, because the cost is in reading the situation. Ask everything you need in one request.
