> For the full page index, fetch https://echonova.ai/llms.txt

# Add text directly

Paste text into the library as a knowledge source when the content has no file behind it.

**Paste Text** creates a knowledge source from text you type or paste, with no
file to prepare first. It is the quickest way to give an agent a policy, a price
list or a set of house rules.

## What you need

- A workspace you are a member of.
- The text itself. Markdown formatting is kept.
- Enough remaining storage on your plan. The text counts against it, measured as
  its size in UTF-8 bytes.

## Steps

### Step 1: Open the add flow

Click **Add** in **Knowledge base**, or **Add New** on an agent's **Knowledge**
tab, then choose **Paste Text**.

### Step 2: Name it

Fill **Name**. This is what the source is called everywhere in the portal, and
it also names the stored file, so keep it short and descriptive.

### Step 3: Paste the content

Fill **Content**. Both fields are required; the **Add** button stays disabled
until each has something in it.

### Step 4: Choose where it lands

Under **Location**, leave **Library root** to keep the source loose, or pick a
folder.

### Step 5: Add it

Click **Add**.

## Get it right

Paste the part the agent needs, with headings, and give it a name you would
search for. Retrieval matches a caller's question against passages, so a tight,
well-structured source is found more often than the same content buried in a
long one.

**Recommended**

```text
Name: Returns window and exceptions

## Standard window
14 days from delivery, unopened, with the receipt.

## Exceptions
Earphones and SIM cards cannot be returned once opened.
Faulty items: 12 months, no receipt needed if paid by card.
```

**Less effective**

```text
Name: notes

Pasted the whole staff handbook, 40 pages, no headings, including the sections
on payroll and parking.
```

## Worked example

You paste the returns text above, name it `Returns window and exceptions`, and
drop it in the **Returns** folder. The row appears at **Indexing** and reaches
**Ready** in a few seconds with 3 chunks.

A caller asks whether they can return opened earphones. Retrieval matches the
**Exceptions** passage and the agent answers from it. Later the window changes
to 30 days: you paste a new version, attach it, and delete the old row, because
a pasted source cannot be edited in place.

## What happens next

Your text is stored as a Markdown file named after the **Name** you gave it. The
library keeps it as a file source, so from then on it behaves like an uploaded
`.md` file: it can be renamed, moved between folders, downloaded and deleted.

There is nothing to upload from your browser, so the source skips **Uploading**
and appears at **Indexing**. From there it follows the usual path to **Ready**
or **Failed**.

One difference matters: a pasted source that fails has no retry action, and its
storage is returned as soon as it fails. Delete the row and paste it again.

## Limits

| Limit             | Value                         | Applies to                                   |
| ----------------- | ----------------------------- | -------------------------------------------- |
| **Name**          | 1 to 200 characters, required | The create request                           |
| **Content**       | Required, must not be empty   | The create request                           |
| Content length    | No maximum                    | The create request                           |
| Workspace storage | Your plan's storage allowance | Counted as the UTF-8 byte length of the text |

There is no character or byte cap on the content itself. The only ceiling is
your plan's storage allowance, and the refusal reads
`Storage limit exceeded for this workspace. Delete files or upgrade your plan.`

## Troubleshooting

### The Add button stays greyed out

Both **Name** and **Content** must hold something after trimming whitespace.

### Storage limit exceeded for this workspace. Delete files or upgrade your plan.

Your plan's allowance is full. Delete sources you no longer need, or move to a
larger plan.

### The source went straight to Failed

The text could not be indexed and the row carries the reason. A pasted source
has no retry, so delete it and paste it again, in smaller pieces if the text is
very long.

### The agent still answers as if the text is not there

Check retrieval is on for that agent, and that the source, or the folder holding
it, is selected. Work through
[the checklist](/docs/agents/knowledge-troubleshooting).

## FAQ

### When should I paste text instead of uploading a file?

Paste text when there is no authoritative file, when the content changes often
enough that maintaining a document is a chore, or when you want to trim a long
document down to the part the agent actually needs. Upload a file when the
document itself is the source of truth and someone else maintains it.

### Should I put this in the agent's personality instead?

Put short, always-true instructions in **Personality**, because the agent reads
them on every turn. Put reference material in knowledge, because it is only
pulled in when a caller's question matches it. A long price list in the persona
costs you on every single turn.

### Can I edit a pasted source later?

Not in place. You can rename it, but the content is fixed once created. Paste a
new version and delete the old one.

### Does Markdown formatting help?

Yes. Headings and lists are kept as written, and they give the text natural
places to split, which makes each passage more focused.

### Can I download what I pasted?

Yes. Use **Download** in the row menu. You get the stored Markdown file back.

## Related

- [How knowledge works](/docs/agents/knowledge-overview): what reaches a turn, and when
- [Add documents to the library](/docs/agents/knowledge-documents): upload the file instead
- [Add a web page or crawl a site](/docs/agents/knowledge-website): index a URL
- [Organize knowledge in folders](/docs/agents/knowledge-folders): keep pasted sources together
- [The agent did not use my document](/docs/agents/knowledge-troubleshooting): when a ready source goes unused
