Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions elnora/skills/elnora-agent/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
name: elnora-agent
description: >
This skill should be used when the user asks about "Elnora agent capabilities",
"what can the agent do", "agent tools", "web search", "academic search",
"PubMed", "ArXiv", "Exa", "Tavily", "Perplexity", "Valyu", "ToolUniverse",
"scientific tools", "agent memory", "code execution", "sandbox",
"search papers", "search literature", "drug discovery", "protein analysis",
"clinical trials", "file operations", "agent skills",
or any question about what the Elnora AI Agent can do when you send it a task.
---

# Elnora Agent Capabilities

The Elnora Agent is a sandboxed Python environment with ~78 core tools + 2,100 ToolUniverse scientific tools. Interact via `elnora_create_task` / `elnora_send_message` — describe what you need in plain language, don't reference internal tool names.

## MCP Tools for Agent Interaction

| Tool | Purpose |
|------|---------|
| `elnora_create_task` | Create a task with optional `initial_message` to start generation |
| `elnora_send_message` | Send follow-up message. 30-120s for complex requests. |
| `elnora_get_task_messages` | Read agent responses |
| `elnora_generate_protocol` | Convenience: create task + send message in one call |

## What the Agent Can Do

| Capability | Examples |
|------------|----------|
| **Web search** (34 tools) | Real-time search, neural/semantic search, deep research, URL extraction, site crawling. Providers: Tavily, Exa, Valyu, Perplexity |
| **Academic databases** (12 tools) | PubMed, ArXiv, Semantic Scholar, bioRxiv, Europe PMC, OpenAlex, UniProt, ClinicalTrials.gov, ChEMBL, Wolfram Alpha |
| **2,100+ scientific tools** (ToolUniverse) | Protein structure (AlphaFold, PDB), genomics (Ensembl, ClinVar), chemistry (PubChem, DrugBank), pathways (KEGG, Reactome), drug safety (OpenFDA), and 21 more categories |
| **35 domain skills** | Literature review, experimental design, drug discovery workflow, protein engineering, single-cell RNA QC, statistical analysis, scientific writing |
| **File operations** (11 tools) | Create/read/search files, full-text grep, upload attachments, link files to tasks |
| **Memory** (9 tools) | Remember facts across tasks, share findings between agents, recall prior context |
| **Code execution** | Persistent Python REPL with pandas, numpy, biopython. Variables survive across executions. 30s timeout, 1MB output max |

## Good Prompts

**Web research:**
> "Search for recent CRISPR delivery methods and summarize the top findings"

**Literature review:**
> "Search PubMed for BRCA1 DNA repair papers from 2024, find the most cited ones"

**Drug target research:**
> "Search for compounds targeting EGFR, cross-reference with active clinical trials"

**Scientific computation:**
> "Use ToolUniverse to run AlphaFold on this sequence: MVLSPADKTNVKAAWGKVGA"

**Memory:**
> "Remember that our lab uses Q5 polymerase for all high-fidelity PCR at 62C"

**File search:**
> "Search all project files for mentions of 'annealing temperature' and summarize"

**Reference existing files:**
Use `file_ids` in `elnora_send_message` or `context_file_ids` in `elnora_create_task` to give the agent context about existing protocols.
57 changes: 57 additions & 0 deletions elnora/skills/elnora-files/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,17 @@ Get version history for a file. Use this to track how a protocol evolved across

Returns paginated list of versions with timestamps and metadata.

### elnora_get_version_content

Get the content of a specific historical file version. Essential for comparing versions or reviewing past protocol iterations.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file_id` | uuid | Yes | File UUID |
| `version_id` | uuid | Yes | Version UUID |

Get version IDs from `elnora_get_file_versions` first.

### elnora_create_version

Create a new version of a file with updated content.
Expand Down Expand Up @@ -241,3 +252,49 @@ Change a file's visibility level (e.g., promote to organization library).
### Reference a file in a task conversation

Use file IDs from `elnora_list_files` as `file_ids` in `elnora_send_message` or `context_file_ids` in `elnora_create_task` to give the AI context about existing protocols or datasets.

## Presigned URL Upload (Large/Binary Files)

For files too large for inline upload (>100KB) or binary files, use the two-step presigned URL flow:

### elnora_initiate_upload

Start a multi-step file upload. Returns a presigned URL for uploading content directly to storage.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | uuid | Yes | Project UUID |
| `file_name` | string | Yes | Filename (min: 1, max: 255 chars) |
| `content_type` | string | No | MIME type (default: application/octet-stream) |
| `file_size_bytes` | integer | Yes | File size in bytes |

Returns a presigned URL and file ID. PUT the file content to the URL, then confirm.

### elnora_confirm_upload

Confirm that a file upload to the presigned URL has completed.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file_id` | uuid | Yes | File UUID from `elnora_initiate_upload` |

## Search Inside Files

### elnora_search_file_content

Full-text search inside file bodies. Finds content within protocols and documents, not just metadata.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `query` | string | Yes | - | Search query (min: 1, max: 1,000 chars) |
| `page` | integer | No | 1 | Page number |
| `page_size` | integer | No | 25 | Results per page (max: 100) |

## Token Efficiency

All file tools support optional `compact` and `fields` parameters:

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `compact` | boolean | false | Strip null/empty values (~30-40% token savings) |
| `fields` | string | all | Comma-separated field names (e.g., "id,name") |
12 changes: 11 additions & 1 deletion elnora/skills/elnora-platform/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,27 @@ Auth is handled automatically by the MCP connection:

No manual login required.

## Token Efficiency

All MCP tools support two optional params for reducing token usage:

| Param | Effect |
|-------|--------|
| `compact: true` | Strip null/empty values (~30-40% savings). Always use in agent workflows. |
| `fields: "id,name"` | Return only specified fields. Applied to each item in paginated results. |

## Routing Table

| Need | Sub-skill | Trigger keywords |
|------|-----------|------------------|
| List/get/create/update/archive projects, manage members | `elnora-projects` | project, workspace, create project, members |
| Create/manage/message tasks, protocol generation | `elnora-tasks` | task, protocol, send message, generate |
| Browse/read/upload/create/version/fork files | `elnora-files` | file, content, version history, upload, download, fork |
| Find tasks or files by keyword | `elnora-search` | search, find, query |
| Find tasks, files, or content by keyword | `elnora-search` | search, find, query, search file content |
| Manage project folder trees | `elnora-folders` | folder, create folder, move folder |
| Org management, members, billing, invitations, shared library | `elnora-orgs` | organization, org, billing, invite, library |
| Auth, API keys, account, health, diagnostics | `elnora-admin` | api key, health, account, feedback, audit, flags |
| What can the Elnora Agent do? (tools, search, memory) | `elnora-agent` | agent capabilities, agent tools, what can agent do |

## Organization Context

Expand Down
27 changes: 25 additions & 2 deletions elnora/skills/elnora-search/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
name: elnora-search
description: >
This skill should be used when the user asks to "search tasks", "find a protocol",
"search files", "find tasks about", "look up", "query Elnora", "search Elnora",
"search files", "search file content", "search inside files", "find tasks about",
"look up", "query Elnora", "search Elnora", "full text search",
or any task involving searching the Elnora Platform for tasks or files by keyword.
---

Expand Down Expand Up @@ -90,13 +91,35 @@ Full-text search scoped to files only.

Same response shape as `elnora_search_all` but only returns file results. Use this when you know you are looking for a document or protocol output.

### elnora_search_file_content

Full-text search inside file bodies (protocols, documents). Unlike `elnora_search_files` which searches metadata, this searches the actual content of files.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `query` | string | Yes | - | Search query (min: 1, max: 1,000 chars) |
| `page` | integer | No | 1 | Page number (min: 1) |
| `page_size` | integer | No | 25 | Results per page (min: 1, max: 100) |

Same response shape as other search tools. Use this to find specific protocol steps, reagent mentions, or methods within generated protocols.

## Token Efficiency

All search tools support optional `compact` and `fields` parameters:

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `compact` | boolean | false | Strip null/empty values (~30-40% token savings) |
| `fields` | string | all | Comma-separated field names (e.g., "id,name,snippet") |

## Choosing the Right Search Tool

| Goal | Tool |
|------|------|
| Find anything matching a keyword | `elnora_search_all` |
| Find a conversation about a topic | `elnora_search_tasks` |
| Find a protocol document by name or content | `elnora_search_files` |
| Find a protocol document by name | `elnora_search_files` |
| Find content INSIDE file bodies | `elnora_search_file_content` |
| Browse all files in a specific project | `elnora_list_files` (not search) |
| Browse all tasks in a specific project | `elnora_list_tasks` (not search) |

Expand Down