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

# Built-in Tools

> Every tool the Brain can use — knowledge search, web search, academic papers, to-dos, assay catalog, file analysis, and more.

## Overview

The Brain has 15 specialized tools it can invoke automatically. You never need to tell it which tool to use — the Brain's planner selects tools based on your question. On the advanced chat page (`/chat`), you can see which tools are being used in the plan visualization.

## Tool Reference

### 1. create\_plan

**Always called first.** Creates a structured research plan before answering.

| Parameter | Type   | Description                                                       |
| --------- | ------ | ----------------------------------------------------------------- |
| `mode`    | string | `base_analysis`, `competitive_analysis`, or `writing`             |
| `steps`   | array  | List of steps, each with `id`, `label` (max 65 chars), and `tool` |

Available tools for steps: `web_search`, `knowledge_base_search`, `meeting_intel`, `reasoning`, `synthesis`, `writing`, `create_document`, `paper_search`, `list_todos`, `create_todo`, `search_assay_catalog`, `search_coverage_policies`, `search_labs`, `analyze_uploaded_file`, `add_to_knowledge_vault`, `run_analysis`, `create_chart`, `build_financial_model`, `computer_use`

### 2. knowledge\_base\_search

Semantic search across your vault documents using Pinecone.

| Parameter | Type   | Description                   |
| --------- | ------ | ----------------------------- |
| `query`   | string | Natural language search query |

**How it works:**

* Embeds query using `text-embedding-3-large` (1024 dimensions)
* Searches up to 5 Pinecone namespaces (one per vault: `default`, `sales`, `science`, `marketing`, etc.)
* Returns top 5 results per namespace, merged and sorted by score
* Final output: top 10 most relevant passages with file names and content

**Example prompts that trigger this:**

* "What does our SOP say about sample handling?"
* "Find the pricing we quoted to McKesson"
* "What were the key findings in our validation study?"

### 3. web\_search

Searches the web using Tavily for current information.

| Parameter      | Type   | Description           |
| -------------- | ------ | --------------------- |
| `query`        | string | Search query          |
| `search_depth` | string | `basic` or `advanced` |

**Only available when Search Depth is set to Deep.** Returns web results with titles, URLs, and content excerpts.

**Example prompts:**

* "What is the latest FDA guidance on LDTs?"
* "Current reimbursement rates for CPT 87635"
* "What did competitor X announce last week?"

### 4. meeting\_intel

Searches your meeting transcripts and analysis reports.

| Parameter | Type   | Description                           |
| --------- | ------ | ------------------------------------- |
| `query`   | string | Natural language query about meetings |

**Only available when you have recorded meetings.** Returns meeting titles, dates, relevant transcript excerpts, and speaker attributions.

**Example prompts:**

* "What did we decide about the multiplex panel?"
* "What action items came out of the board meeting?"
* "Has anyone discussed pricing changes in recent calls?"

### 5. paper\_search

Searches academic literature via Semantic Scholar and PubMed.

| Parameter | Type   | Description                    |
| --------- | ------ | ------------------------------ |
| `query`   | string | Research topic                 |
| `fields`  | string | `all`, `clinical`, or `recent` |

Returns papers with: title, authors, year, citation count, abstract, DOI/URL.

**Example prompts:**

* "Find recent papers on CRISPR diagnostics for respiratory viruses"
* "What is the latest research on Ct value interpretation?"
* "Studies comparing RT-PCR vs isothermal amplification"

### 6. create\_todo

Creates tasks directly in your To-Dos.

| Parameter     | Type   | Description                          |
| ------------- | ------ | ------------------------------------ |
| `title`       | string | Task name (required)                 |
| `priority`    | string | `low`, `medium`, `high`, or `urgent` |
| `section`     | string | `backlog`, `today`, or `this_week`   |
| `description` | string | Task description (optional)          |
| `due_date`    | string | ISO 8601 date (optional)             |

**Example prompts:**

* "Create a to-do to follow up with Greg by Friday"
* "Add a high-priority task: Review the McKesson contract"
* "Make action items from the last meeting into to-dos"

### 7. list\_todos

Retrieves your to-do list with filtering.

| Parameter  | Type   | Description                                       |
| ---------- | ------ | ------------------------------------------------- |
| `status`   | string | `open`, `in_progress`, `done`, or `all`           |
| `priority` | string | `low`, `medium`, `high`, `urgent`, or `all`       |
| `section`  | string | `backlog`, `today`, `this_week`, `done`, or `all` |

**Example prompts:**

* "What is on my to-do list?"
* "Show me overdue tasks"
* "What high-priority items do I have this week?"

### 8. search\_assay\_catalog

Searches your diagnostic assay panel catalog.

| Parameter | Type      | Description                                  |
| --------- | --------- | -------------------------------------------- |
| `mode`    | string    | `browse_panels` or `match_targets`           |
| `targets` | string\[] | Target names (only for `match_targets` mode) |

**Example prompts:**

* "Do we have an assay for RSV?"
* "What panels include the N gene target?"
* "Match these targets: RSV-A, RSV-B, SARS-CoV-2"

### 9. create\_document

Generates a formatted report or document in the side panel.

| Parameter       | Type   | Description                     |
| --------------- | ------ | ------------------------------- |
| `title`         | string | Document title                  |
| `content_brief` | string | Description of what to generate |

The document streams into a side panel with full Markdown formatting. Used for reports, summaries, proposals, and other long-form content.

**Example prompts:**

* "Generate a meeting summary report"
* "Create a competitive analysis document"
* "Draft a validation protocol outline"

### 10. analyze\_uploaded\_file

Analyzes files you have uploaded to the conversation.

| Parameter | Type   | Description                    |
| --------- | ------ | ------------------------------ |
| `query`   | string | What to analyze about the file |

<Warning>
  This tool is only available on the advanced chat page (`/chat`) and only when you have uploaded files with the paperclip. The home page does not send file attachments to the API.
</Warning>

Uses GPT-4o with `input_file` blocks for direct file analysis.

**Example prompts (with file attached):**

* "Summarize this contract"
* "What are the main findings in this paper?"
* "Extract all dates and deadlines"
* "Read the text in this image"

### 11. add\_to\_knowledge\_vault

Stores uploaded files permanently in your Knowledge Vault.

| Parameter    | Type      | Description                         |
| ------------ | --------- | ----------------------------------- |
| `file_names` | string\[] | Specific filenames or `["all"]`     |
| `vault_name` | string    | Target vault (default: `"default"`) |
| `note`       | string    | Optional note about the files       |

Files are stored in Supabase storage, then ingested and indexed for future Brain searches.

**Example prompts (with file attached):**

* "Add this to the Science vault"
* "Store all uploaded files in the Sales vault"

### 12. computer\_use <span style={{color: '#3b82f6', fontSize: '12px', fontWeight: 600, background: '#3b82f620', padding: '2px 8px', borderRadius: '4px', marginLeft: '8px'}}>BETA</span>

Browses live websites, takes screenshots, clicks elements, fills forms, and extracts content using a headless Chromium browser powered by [Browserbase](https://browserbase.com).

| Parameter         | Type      | Description                                                                  |
| ----------------- | --------- | ---------------------------------------------------------------------------- |
| `task`            | string    | What to do on the website — screenshot, extract data, click, fill form, etc. |
| `url`             | string    | Target URL (must start with `https://` or `http://`)                         |
| `allowed_domains` | string\[] | Additional domains the browser may need (optional)                           |

**How it works:**

1. A Browserbase session launches a remote Chromium browser
2. A vision agent (GPT-5.4) sees page screenshots and decides actions step by step
3. Each action (navigate, click, type, scroll, extract) executes via Playwright
4. Screenshots are captured after every action and displayed inline in the chat
5. Extracted data is returned as structured JSON

The agent can handle multi-step interactions: navigating between pages, clicking menus, filling forms, scrolling to load content, and extracting tables or text. If an action fails, it automatically tries alternative approaches.

**Example prompts:**

* "Go to [https://example.com](https://example.com) and take a screenshot"
* "Visit our competitor's pricing page and extract their tiers into a table"
* "Browse to the FDA guidance page and screenshot the latest updates"
* "Go to the conference website and extract the speaker list and schedule"
* "Take a screenshot of [https://ospribio.com](https://ospribio.com) — does the homepage look correct?"

<Warning>
  **Beta feature.** Computer Use is in active development. The agent may take multiple attempts to interact with complex websites. For sensitive actions (login, form submission, purchases), the agent will request confirmation before proceeding.
</Warning>

<Tip>
  Computer Use works best with specific URLs and clear task descriptions. Say *what* you want to find or do, not just "browse this site." For general web research without a specific URL, use `web_search` instead.
</Tip>

### 13. search\_coverage\_policies

Searches the insurance coverage policy database (1,200+ policies across 6 payers with 26,000+ code-level coverage rules).

| Parameter      | Type      | Description                                           |
| -------------- | --------- | ----------------------------------------------------- |
| `mode`         | string    | `lookup_code`, `search_policies`, or `check_coverage` |
| `codes`        | string\[] | Medical codes to look up (e.g., `["15823", "87631"]`) |
| `code_system`  | string    | `CPTCode`, `HCPCSCode`, or `ICD-10-CM`                |
| `query`        | string    | Text search for policy titles/summaries               |
| `relationship` | string\[] | Filter: `COVERS`, `DOES_NOT_COVER`, `REFERENCES`      |

**Modes:**

* `lookup_code` — Find all policies that mention specific codes
* `search_policies` — Text search across policy titles and summaries
* `check_coverage` — Filter by coverage relationship (only COVERS, only DOES NOT COVER, etc.)

Results include policy titles, payer names, coverage status, confidence scores, medical necessity conditions, and verbatim policy language.

**Example prompts:**

* "Is CPT 87631 covered by Cigna?"
* "What are the medical necessity criteria for respiratory panel testing?"
* "Which payers don't cover CPT 87507?"
* "Find policies about STI testing"
* "Draft an appeal letter for CPT 87631 using BCBS TN's policy criteria"

### 14. search\_labs

Searches the CLIA lab database containing 671,000 US clinical laboratories (531K active).

| Parameter      | Type      | Description                                                          |
| -------------- | --------- | -------------------------------------------------------------------- |
| `mode`         | string    | `search` or `lookup`                                                 |
| `q`            | string    | Text search for lab names                                            |
| `clia_number`  | string    | CLIA number for direct lookup                                        |
| `state`        | string\[] | State codes (e.g., `["CA", "TX"]`)                                   |
| `complexity`   | string\[] | `high`, `moderate`, `waived`, `ppm`                                  |
| `lab_type`     | string\[] | `independent`, `hospital`, `physician_office`, `reference_lab`, etc. |
| `has_director` | boolean   | Only labs with NPI-matched director data                             |
| `min_volume`   | number    | Minimum annual test volume                                           |

**Modes:**

* `search` — Filter/search labs with multiple criteria
* `lookup` — Get full details for a specific CLIA number

Results include lab name, address, phone, lab type, complexity, director name/title/phone, test volume, NPI number, and taxonomy codes.

**Example prompts:**

* "Find high-complexity independent labs in Texas"
* "Look up CLIA number 01D0026356"
* "How many reference labs are in California?"
* "Find labs with more than 100,000 annual tests"
* "Which hospitals in Florida have a lab director named Smith?"

### 15. ask\_clarification

Asks you a clarifying question when your request is ambiguous.

| Parameter     | Type      | Description              |
| ------------- | --------- | ------------------------ |
| `question`    | string    | The clarifying question  |
| `suggestions` | string\[] | 2-4 quick-answer options |

This pauses the Brain's response and waits for your answer. You can click a suggestion or type a custom response.

## Tool Chaining

The Brain often chains multiple tools in a single response. For example:

**Example 1: Assay research report**

1. You ask: "Compare our RSV assay with published literature and create a report"
2. Step 1: `search_assay_catalog` (mode: `match_targets`, targets: \["RSV"])
3. Step 2: `paper_search` (query: "RSV diagnostic assay performance")
4. Step 3: `knowledge_base_search` (query: "RSV validation data")
5. Step 4: `reasoning` (synthesize comparison)
6. Step 5: `create_document` (title: "RSV Assay Comparison Report")

**Example 2: Coverage + lab intelligence**

1. You ask: "Which payers cover CPT 87631 and how many high-complexity labs are in Tennessee?"
2. Step 1: `search_coverage_policies` (mode: `lookup_code`, codes: \["87631"], code\_system: "CPTCode")
3. Step 2: `search_labs` (mode: `search`, state: \["TN"], complexity: \["high"])
4. Step 3: `reasoning` (connect coverage data with lab landscape)

**Example 3: Appeal letter with policy citations**

1. You ask: "Draft an appeal letter for a denied claim on CPT 87631 from BCBS Tennessee"
2. Step 1: `search_coverage_policies` (mode: `check_coverage`, codes: \["87631"], relationship: \["COVERS"])
3. Step 2: `reasoning` (extract relevant medical necessity criteria)
4. Step 3: `create_document` (title: "Appeal Letter — CPT 87631")

<Tip>
  Set **Reasoning Effort** to **High** for complex multi-tool queries. This gives the Brain more time to plan and execute a thorough research process.
</Tip>
