Core concepts

The building blocks of the Elnora platform — organizations, tasks, files, the knowledge base, and more.

A quick tour of the objects you'll work with through the API, CLI, and MCP.

Organizations

An organization is the top-level container for your team's data. It has members (with roles) and invitations. Most resources belong to an org, and requests act on your active organization unless you specify another.

Connected apps

Where connected apps are available, the agent can work with the third-party apps your team already uses through a connection each person makes with their own account. The organization decides what may be connected; each person decides what they actually connect.

An app is off until an organization owner or admin allows it, under Organization settings → Integrations, where they also choose which of the app's services members may use. A member then connects from Settings → Integrations and picks which of the allowed services to include — every allowed service is ticked to start, and anything left out is simply not part of that connection. Reconnect re-authorizes only the services a connection already has; Add services is the separate action that widens it, after you choose what to add. You can turn a connection off or disconnect it from the same page at any time.

Files & the knowledge base

Files are your workspace documents (uploads and generated outputs), and folders organize them into a tree. Files live in your knowledge base, which is private to you by default. You choose what to share and with whom — with specific members or your whole organization, as a viewer, editor, or admin — and a folder passes its sharing down to everything inside it, so you set access once. The library is your organization's shared collection of reusable content.

You can read back the effective access on any file or folder (GET /files/{id}/access, GET /folders/{id}/access): everyone who can reach it, each entry marked as granted directly or inherited from a named ancestor folder. A folder can also stop inheriting from its ancestors, and a file that is shared more widely than the folder holding it keeps that wider audience until you clear it explicitly — so narrowing a folder never silently changes who can already read something inside it.

Changing a file's content — saving a new version, restoring an earlier one, or committing a working copy — takes write access to that file: you created it, or it is shared with you as an editor or admin (directly or through a folder it inherits from). Being able to add files to a folder does not by itself let you overwrite someone else's file in it, and a viewer cannot write through a working copy.

Every file also carries a short description and tags. Elnora fills these in for the files it writes and derives them for files that arrive without any, so similar-looking documents can be told apart without opening each one. You can set your own at any time (PUT /files/{id}).

When the agent edits a file

An edit the agent makes lands on the file you uploaded, not on the text rendition extraction made of it, and is saved as a new version — so the history stays intact and you can restore an earlier version at any time. The new version keeps the original's own encoding and line endings and is unchanged outside the edit itself. If a change would introduce a character the file's encoding cannot represent, the agent names that character and where it is instead of quietly rewriting the file in a different encoding.

A change someone else saves while the agent is working is not overwritten. The agent notices the newer version, re-reads it, re-applies its own change on top, and tells you in its reply that the file changed while it was working; where it cannot do that, it names the file it did not write rather than replacing the version that is now saved.

Automatic curation

Elnora can also keep your organization's knowledge base tidy for you. With knowledge base auto-tidy on, a file that lands in the organization's knowledge base is classified, named, described, tagged, and filed by the agent as it arrives, instead of waiting for someone to do it by hand. Everything it does is an ordinary file operation, so each change is versioned and reversible like any other.

It acts on arrival only. There is no unattended pass over the documents already in your knowledge base, so anything you have named, filed, or shared by hand stays exactly as you left it.

Auto-tidy is off by default and is turned on per organization. Only an organization owner or admin can change it — in the dashboard under Organization settings → Knowledge base, or over the API:

curl -X PATCH https://platform.elnora.ai/api/v1/organizations/<org-uuid>/kb-autotidy \
  -H "X-API-Key: $ELNORA_API_KEY" -H "Content-Type: application/json" \
  -d '{ "enabled": true }'

What you can upload

Uploads are not limited to a fixed list of file types. A file is stored unless its extension is one Elnora refuses outright — executables, installers, scripts and similar runnable formats — and those fail with 400 and a message naming the extension. A microscopy image, a sequencing read, a chromatogram or an instrument export is accepted the same way a PDF is.

What varies by format is how much Elnora can do with a file, not whether you can keep it. Documents, spreadsheets, delimited data and images are extracted and searchable as described below, and many scientific formats can be opened and measured by the agent. A format nothing on the platform can parse is still stored, versioned, shared, and downloadable — it just has no text rendition behind it, so file-content search has nothing to match on.

Opening a file

In the dashboard, a file opens in a viewer of its own rather than only downloading — the chat's attachments included: PDFs, Office and OpenDocument documents, tables (CSV/TSV, Parquet, Arrow), notebooks, Markdown, LaTeX and HTML, molecular structures, sequences, alignments and phylogenies, genome tracks, HDF5 and Zarr containers, instrument traces, declared archives such as plate exports, audio and video — as well as the scientific images no browser displays on its own, including TIFF/OME-TIFF, whole-slide scans, DICOM and NIfTI volumes. Where a format cannot be decoded in the browser, the viewer says the file is stored and names what can read it instead of showing a broken image; a format the platform doesn't recognise offers a plain download rather than claiming support it doesn't have. A text-backed file is decoded in the viewer by its own encoding, the same way extraction reads it, so a UTF-16 export or a Windows-1252 instrument table shows its degree, micro and plus-minus signs rather than replacement characters.

When the agent names one of your files in its reply, that name is a link: it opens the file in the viewer and moves the folder tree to the folder holding it, so you can see where the file lives rather than only what's in it. A path that doesn't resolve to a file you can open is shown as plain text instead of a link that leads nowhere.

Regions and scale on an image

A scientific image opens with a drawing surface over it. Draw a rectangle, square, ellipse, circle, polygon, freehand outline, line, or point, and the viewer reports that region's area, perimeter or length, and position. Regions are saved alongside the image and shared with the agent, so you can outline what you want measured and ask for the numbers — and the regions the agent measured appear in the viewer, so you can see exactly where it looked. A region belongs to the plane it was drawn on, so it stays meaningful in a z-stack or a time series.

Measurements come back in real units whenever the image has a scale. Elnora uses the pixel size the file declares; where a file declares none — a micrograph whose only scale is a burnt-in bar — the agent records the scale it read and where it read it from, and that calibration stays with the image for later measurements. You can also type the scale in yourself when the file declares none, and a scale you set is not overwritten by the agent's next reading of the same image.

When Elnora counts or measures objects, the numbers cover every object it found rather than only the ones it drew or listed: a size distribution comes back both number-weighted and volume-weighted (D10, D50, D90), with the detection floor stated alongside it, so a D50 is never quietly a lower bound. On a calibrated image you can select by real size — "every particle over 5 µm²" — and the filter is applied in those units. Where a measurement is incomplete, Elnora says so with the result instead of presenting it as final: the count hit a cap, objects were too small to outline at that detail, or the image has no scale on record and the sizes are in pixels.

On a cross-section, a question about one layer — "the porosity of the bottom layer" — is answered on a layer Elnora actually found in the image, not one picked by brightness or by eye. The candidate layers are drawn as numbered regions over your image, your wording is matched against them, and where it fits more than one layer or none, the agent asks which you mean before it measures.

Text extraction

When you upload a file, Elnora extracts its text in the background so the agent can read it and search can find it. Documents (PDF, DOCX and PPTX including their macro-enabled variants, ODT, ODP, HTML, XML, AsciiDoc, LaTeX, EPUB, .eml email and .vtt transcripts) and spreadsheets (XLSX, XLS, ODS, CSV, TSV) are converted to text; Markdown (including R Markdown and Quarto), plain text, JSON, and YAML are taken as they are. Text uploads are decoded using the file's own encoding, so a file saved as UTF-16 or in a Windows code page such as Windows-1252 extracts correctly instead of arriving empty. Images (PNG, JPEG, GIF, WebP) are a supported input in their own right and are read with a vision model, as are PDFs that turn out to be scans. Your original file is always kept as uploaded — extraction only adds a text rendition alongside it.

Each file version reports how far extraction has got in extractionStatus: pending, running, done, failed, or deferred (null when there was nothing to extract, such as a file the agent wrote itself). File-content search covers a version once it reaches done.

deferred is a success, not an error, and is worth handling separately from failed: the file is stored, versioned, shareable, previewable and readable by the agent, but its bytes hold no text worth extracting into the knowledge base — a TIFF stack, an HDF5 container, a Parquet table, an instrument trace, or a legacy binary Office file such as .doc or .ppt.

A document you attach to a task message — or one you have open in the viewer while you chat about it — is extracted the same way, and the agent waits briefly for that extraction to finish before it starts work on your message — so it reads the document's text rather than starting without it. If extraction is still running when that wait ends, the agent tells you it can't read that document yet rather than guessing at its contents; send the message again once the file's extractionStatus reads done.

Delimited data files

Delimited data files are read by their content, not their extension. When Elnora previews or analyses a .csv or .tsv, it honours a leading sep= line, and otherwise infers the separator (comma, semicolon, tab, or pipe) from the file itself; it also recognises comma decimals. So a tab-delimited Excel export saved as .csv, or a European-locale export with ; separators and values like 0,87, keeps its real columns and numbers instead of collapsing into a single column.

Tasks & the agent

A task is a conversation with the Elnora agent. You create a task, send messages, and the agent processes them asynchronously — generating and optimizing protocols, designing experiments, analyzing data (including measurements taken directly on scientific images — any image format the platform can open, from a plain JPEG to a whole-slide scan, a DICOM series or a 3-D volume) and plotting the results, searching your knowledge base as well as the scientific literature, patents, public research databases and funding calls, and producing deliverables such as spreadsheets and slide decks. Poll the task's messages until the agent's reply completes.

A task is private to whoever created it — another member of your organization can't read it, and an API key sees exactly the tasks its creator can. You share results by sharing the files, not the conversation.

Anything the agent produces is a first-class file in your knowledge base — private to you by default — rather than a task-only artifact, so it can be shared, versioned, and searched like any other file. Files you attach to the chat stay scoped to the task.

Electrochemistry & materials

The agent also works up instrument data outside the life sciences. A potentiostat or frequency-response-analyser export is read straight from its vendor format — no manual conversion to CSV first — then checked with a Kramers–Kronig test, fitted to an equivalent circuit, and deconvolved into a distribution of relaxation times, so overlapping arcs resolve into the individual loss mechanisms behind them. The DC side is covered too: area-specific resistance, Tafel slope, and the Arrhenius activation energy of a tracked peak across a temperature sweep.

What the agent remembers

Each task is its own conversation, but the agent carries durable notes between them, kept as ordinary Markdown files under a memory/ folder in your workspace and read back on every turn. What it learns about you and how you work stays private to you, under memory/user/; conventions that belong to the whole team live in memory/AGENTS.md, which every member of your organization — and the agent — can read and edit, so those conventions stay current as they change. Both are just files — browse, read, edit, or clear them with the same file and folder endpoints as anything else.

Search runs across your own tasks' messages, plus the names and the extracted full text of every file you have access to, so the agent — and you — can ground work in your organization's data. Results never include a task or a file you can't already open.

Next steps

On this page