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

# Harper — Your AI Chief Analyst Officer

> Harper is Fintheon's CAO and primary AI analyst. Ask market questions, attach chart screenshots, switch analyst personas, and route queries through the full 5-agent Boardroom DAG.

Harper is Fintheon's Chief Analyst Officer — the AI analyst you interact with directly from the Consilium workspace. Every conversation flows through the same chat interface: you type (or speak), Harper responds in a real-time stream. You can switch to any of the five analyst personas, attach chart images, invoke slash commands, and — when you need a deeper read — send your question through the full Boardroom deliberation pipeline that routes across all five agents before synthesizing a response.

## Starting a conversation

Open the **Chat** tab in Consilium to reach Harper. The composer sits at the bottom of the thread. Type your question and press Enter (or click Send). Harper begins streaming her response immediately.

Your conversation is saved automatically under the current session. Use the **Sessions** dropdown at the top of the chat panel to name a session, switch between past sessions, or start a fresh one.

<Tip>
  Harper carries your trading context — selected instrument, risk settings, and stated goals — into every message automatically. You don't need to repeat your setup each time.
</Tip>

## Composer controls

The composer bar contains several controls to the left of the input field:

| Control               | What it does                                                             |
| --------------------- | ------------------------------------------------------------------------ |
| **Persona dropdown**  | Switch the active analyst voice (Harper, Oracle, Feucht, Consul, Herald) |
| **Provider dropdown** | Choose the AI routing backend (VProxy, Nous, ORouter)                    |
| **Tools dropdown**    | Activate MCP connectors and skill shortcuts                              |
| **Relay button**      | Send the current conversation to your mobile device                      |

<Note>
  The Relay button requires an active conversation (send at least one message first). When active, the desktop input is mirrored on mobile and a banner confirms the relay is live. Click **Disconnect** to resume on desktop.
</Note>

## Analyst personas

By default you are talking to Harper in her CAO role. Use the **Persona dropdown** to switch voices mid-conversation. Each persona brings a distinct analytical focus:

| Persona    | Role                 | Focus                                                    |
| ---------- | -------------------- | -------------------------------------------------------- |
| **Harper** | Lead Analyst / CAO   | Executive synthesis, full platform access, orchestration |
| **Oracle** | Forecaster           | Prediction markets, probabilistic reasoning              |
| **Feucht** | Risk Manager         | Futures and risk, technical levels, execution            |
| **Consul** | Quantitative Analyst | Mega-cap fundamentals, earnings, sector rotation         |
| **Herald** | Bear Case / News     | Breaking news, social sentiment, headline risk           |

Switching persona changes the voice and analytical stance for subsequent messages. The conversation history carries over so you can compare perspectives on the same topic.

## Provider options

The provider controls which AI backend processes your request. Select it from the small icon button to the left of the composer.

<Tabs>
  <Tab title="VProxy (Local)">
    Routes through the local VProxy gateway using your Anthropic subscription via OAuth. This is the default. If VProxy is unreachable, Harper will surface a warning inline and suggest switching providers — you will not get a silent failure.

    Best for: full sessions when you want Claude Opus quality with your own API key.
  </Tab>

  <Tab title="Nous (Qwen3)">
    Routes through Nous Research using the Qwen3 model. Available when VProxy is down or when you prefer not to use your Anthropic quota.

    Best for: quick queries during VProxy maintenance windows.
  </Tab>

  <Tab title="ORouter (Opus)">
    Routes through OpenRouter, targeting Claude Opus. Useful as a cloud fallback that does not depend on the local VProxy process.

    Best for: situations where you need Claude Opus remotely without running VProxy locally.
  </Tab>
</Tabs>

## Boardroom mode

Boardroom mode sends your question through the full five-agent DAG (directed acyclic graph) rather than directly to Harper alone. Each agent — Oracle, Feucht, Consul, Herald, and Harper — produces its own analysis in sequence, then Harper synthesizes the outputs into a final response. The whole run streams into the chat bubble in real time with each agent labeled.

<Steps>
  <Step title="Compose your question">
    Write your question in the composer as normal. Boardroom mode works best for complex questions where you want multiple analytical angles — for example, "Is the current /ES IV environment supported by macro, or is it a sentiment spike?"
  </Step>

  <Step title="Enable Boardroom">
    Switch to the **Boardroom** surface inside Consilium, or ask Harper directly: "Route this through the Boardroom."
  </Step>

  <Step title="Read the streamed output">
    Each agent's contribution arrives under a labeled header (**Oracle (All-Seer):**, **Feucht (Futures & Risk):**, etc.) followed by Harper's synthesis. Confidence scores and key concerns surface inline.
  </Step>
</Steps>

<Warning>
  Boardroom mode takes longer than a direct Harper query — typically 30–90 seconds depending on question complexity. It is not suited for quick lookups or time-sensitive responses mid-session.
</Warning>

## Image attachments and `/quickscope`

You can attach chart screenshots directly to any message. Click the attachment icon in the composer or drag an image into the input area. Harper will analyze the chart and incorporate it into her response.

The `/quickscope` slash command formalizes this workflow:

<CodeGroup>
  ```text Quickscope usage theme={null}
  /quickscope [attach your chart screenshot]

  What levels matter here? Is this a valid setup for a long entry?
  ```
</CodeGroup>

Using `/quickscope` pre-loads a structured chart analysis prompt so Harper knows to return a trade proposal format: key levels, directional bias, entry/stop/target, and a brief rationale.

## Slash commands

Type `/` in the composer to open the slash command picker. Available commands:

| Command       | Purpose                                                                             |
| ------------- | ----------------------------------------------------------------------------------- |
| `/quickscope` | Chart screenshot analysis — attach an image and receive a structured trade proposal |

## Skill badges and MCP connectors

The **Skills** section of the Tools dropdown lists available MCP server connectors. When a connector is active, its badge appears in the composer area. Active connectors give Harper access to additional tools — for example, a file-system connector allows Harper to read and write local files.

Harper can also use tools that come from Fintheon's built-in context bank. The badges show which connectors are live for the current session.

## Tool approvals

When Harper wants to use a tool — running a shell command, reading a file, fetching a URL — a **Tool Approval Card** appears inline in the chat thread. You must explicitly approve or deny each new tool before Harper proceeds.

<Steps>
  <Step title="Review the request">
    The card shows the tool name (Shell Command, Read File, Web Fetch, etc.), the exact input Harper intends to pass, and a color-coded badge indicating the tool category.
  </Step>

  <Step title="Approve or deny">
    Click **Approve** to allow the tool use. Approval is permanent for that tool — future uses of the same tool will not require another prompt.

    Click **Deny** to block the tool use. Harper will acknowledge the denial and continue without executing the tool.
  </Step>

  <Step title="Manage permissions">
    Granted permissions persist across sessions. To revoke a tool permission, use the API endpoint below.
  </Step>
</Steps>

<Note>
  Approvals are stored per tool name, not per invocation. Once you approve `run_command`, Harper can use it freely in subsequent messages without prompting again. Revoke permissions at any time via `DELETE /api/harper/permissions/:toolName`.
</Note>

## Sessions

Each conversation belongs to a session. Sessions persist your message history and are tied to your account.

* **Sessions dropdown** — browse and switch between named sessions
* **Sessions panel** — full list view with search and rename
* **New session** — starts a fresh conversation with no prior context

Sessions are scoped per user. Anonymous (unauthenticated) access is not supported — you must be signed in before the chat endpoint will accept messages.

## API reference

These are the local API endpoints the application calls. They are shown here for reference.

<CodeGroup>
  ```http Chat (streaming SSE) theme={null}
  POST /api/harper/chat
  Content-Type: application/json
  Authorization: Bearer <your-auth-token>

  {
    "message": "What is the current macro risk for /ES?",
    "conversationId": "conv_abc123",
    "persona": "harper",
    "provider": "local",
    "thinkHarder": false,
    "images": [],
    "activeConnectors": ["filesystem"],
    "userContext": {
      "selectedSymbol": { "symbol": "/ES", "name": "E-mini S&P 500" },
      "tradingGoals": "intraday scalping"
    }
  }
  ```

  ```http Boardroom mode theme={null}
  POST /api/harper/chat
  Content-Type: application/json
  Authorization: Bearer <your-auth-token>

  {
    "message": "Analyze this week's FOMC risk for /NQ longs",
    "boardroom": true,
    "conversationId": "conv_abc123"
  }
  ```

  ```http Status check theme={null}
  GET /api/harper/status
  ```
</CodeGroup>

**`GET /api/harper/status` response**

```json theme={null}
{
  "available": true,
  "agent": "harper",
  "model": "claude-opus-4-6",
  "provider": "strands-vproxy"
}
```

**Additional endpoints**

| Endpoint                                   | Purpose                                             |
| ------------------------------------------ | --------------------------------------------------- |
| `GET /api/harper/permissions`              | List granted tool permissions and pending approvals |
| `DELETE /api/harper/permissions/:toolName` | Revoke a granted tool permission                    |
| `POST /api/harper/tool-decision`           | Approve or deny a pending tool-use request          |
