# Ask Cactus and investigate from an AI client

> Verified against the product on 2026-10-06

## Ask from an AI client

From an AI client, you can search and read published Help Center pages, browse topics and What's New, and ask Cactus about published help. With team access, you can also ask about team-visible knowledge, inspect product knowledge and evidence, search and read conversations, and start or retrieve investigations.

| Access | What you can do |
| --- | --- |
| Public Help Center | Use `search_help` or `search` to find published pages, `read_page` or `fetch` to read them, `list_topics` to browse topics, `read_timeline` to browse What's New, and `ask_help` to ask about published help. |
| Team access | Use `list_products`, `ask`, `lookup_map`, `search_evidence`, `search_conversations`, `read_conversation`, `start_investigation`, and `get_investigation` for team products and knowledge. |

Even with team access, `ask_help` uses the visitor view. Use `ask` for team-visible knowledge. The tools available depend on the permissions granted to the client. For connection and access setup, see [Connect an AI client](https://cactus.heycactus.ai/connect-an-ai-client).

## Search conversations

With `cactus:read` access, use `search_conversations` to find customer conversations and `read_conversation` to retrieve one. A team member can also use `search` to find conversations and `fetch` to read one. Fetching a conversation requires the read scope.

## Investigate product code

With team access, call `start_investigation` with your question to investigate your product's code. The call returns an `investigationId` and a status.

```json
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"start_investigation","arguments":{"question":"Where is product signup validated?"}}}
```

## Retrieve investigation results

Call `get_investigation` on the same product with the `investigationId` returned by `start_investigation` to retrieve its current status and findings when available.

```json
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_investigation","arguments":{"investigationId":"[investigationId]"}}}
```

The returned `status` can be `queued`, `running`, `done`, or `failed`.

- queued
- running
- done
- failed

*The InvestigationStatus states*

| Status | What it means |
| --- | --- |
| `queued` | The investigation hasn't finished. |
| `running` | The investigation hasn't finished. |
| `done` | Findings are ready. |
| `failed` | The response includes a failure sentence. |
