# List questions

URL: https://docs.hanzo.ai/docs/openapi/books/get-books-questions

> Returns the clarifying questions the caller's own recent GL raises — the unusual postings a founder should look at (outliers, reversals, round-offs, uncosted revenue, an overdrawn wallet), sharpest first.

`GET /v1/books/questions`

> [Books →](https://docs.hanzo.ai/docs/openapi/books) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                           |
| ------------- | ----------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/books/questions` |
| **Method**    | `GET`                                     |
| **Operation** | `get_books_questions`                     |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`    |

Returns the clarifying questions the caller's own recent GL raises — the
unusual postings a founder should look at (outliers, reversals, round-offs, uncosted
revenue, an overdrawn wallet), sharpest first. An empty list means the books look clean;
the detector is deterministic over the ledger and invents nothing.

## Request

1 field.

| Field     | In    | Type   | Required | Description                                                                                         |
| --------- | ----- | ------ | -------- | --------------------------------------------------------------------------------------------------- |
| `sandbox` | query | string | —        | Sandbox reads the org's SANDBOX ledger when it is exactly "true"; anything else reads the live one. |

## Response

| Status    | Body                    | Meaning |
| --------- | ----------------------- | ------- |
| `200`     | books.QuestionsResponse | ok      |
| `default` | problem-details         | refused |

`200` body — 7 fields.

| Field                  | In   | Type              | Always | Description                                                                                                                                                                                                                                                          |
| ---------------------- | ---- | ----------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `questions`            | body | books.Question\[] | —      | Questions are what the books want explained, SHARPEST FIRST — largest amounts ahead of smaller ones, and capped, so this is the top of the list rather than everything.                                                                                              |
| `questions[].account`  | body | string            | —      | Account is the chart number the questioned entry posted to, where one applies.                                                                                                                                                                                       |
| `questions[].amount`   | body | string            | —      | Amount is the figure that makes the question concrete, already FORMATTED for display with its currency symbol — a string, not cents, and not for arithmetic.                                                                                                         |
| `questions[].id`       | body | string            | —      | ID is the source transaction the question is about, so answering it leads straight back to the entry that raised it.                                                                                                                                                 |
| `questions[].kind`     | body | string            | —      | Kind is what looked wrong: outlier (a charge far above the usual), reversal (a posting undone), roundoff (a balancing plug big enough to be worth explaining), uncosted (revenue booked with no cost matched to it), or overdrawn (a wallet spent past its balance). |
| `questions[].postedAt` | body | string            | —      | PostedAt anchors the question in time — when the entry it concerns posted.                                                                                                                                                                                           |
| `questions[].text`     | body | string            | —      | Text is the question itself, written for a founder to answer directly.                                                                                                                                                                                               |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo books questions
```

**SDK**

**.ts**

```ts
import { Configuration, BooksApi } from 'hanzoai';

const api = new BooksApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getBooksQuestions();
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import BooksApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = BooksApi(client).get_books_questions()
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.BooksAPI.GetBooksQuestions(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, books_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = books_api::get_books_questions(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.BooksApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new BooksApi(client).getBooksQuestions();
```

**HTTP**

```bash
curl https://api.hanzo.ai/v1/books/questions \
  -H "Authorization: Bearer $HANZO_API_KEY"
```

**MCP**

MCP reaches **books** through the `books` tool, which names its 20 operations with its own verbs — this one among them, under a name only MCP declares. `describe` explains any of them:

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_book_accounts"
         }
       }
     }'
```

---

[Books API](https://docs.hanzo.ai/docs/openapi/books) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
