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

# File Buckets

> Upload documents and query them from your AI tools

export const ArticleInfo = ({author, lastUpdated}) => {
  const authorAvatar = author === 'Alara' ? '/images/author-alara.jpg' : author === 'asad' ? '/images/author-alara.jpg' : null;
  const formatDate = dateInput => {
    if (!dateInput) return '';
    if (typeof dateInput === 'string' && !dateInput.match(/^\d{4}-\d{2}-\d{2}/)) {
      return dateInput;
    }
    try {
      const date = new Date(dateInput);
      const now = new Date();
      const diffTime = Math.abs(now - date);
      const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
      if (diffDays === 0) return 'today';
      if (diffDays === 1) return '1 day ago';
      if (diffDays < 7) return `${diffDays} days ago`;
      if (diffDays < 30) return `${Math.ceil(diffDays / 7)} week${Math.ceil(diffDays / 7) > 1 ? 's' : ''} ago`;
      if (diffDays < 365) return `${Math.ceil(diffDays / 30)} month${Math.ceil(diffDays / 30) > 1 ? 's' : ''} ago`;
      return `${Math.ceil(diffDays / 365)} year${Math.ceil(diffDays / 365) > 1 ? 's' : ''} ago`;
    } catch {
      return dateInput;
    }
  };
  return <div style={{
    display: "flex",
    alignItems: "center",
    gap: "8px",
    marginBottom: "16px",
    padding: "8px 12px",
    backgroundColor: "var(--ifm-color-emphasis-100)",
    borderRadius: "6px",
    fontSize: "14px",
    color: "var(--ifm-color-content-secondary)",
    border: "1px solid var(--ifm-color-emphasis-200)",
    opacity: "0.8"
  }}>
      <div style={{
    width: "40px",
    height: "40px",
    borderRadius: "50%",
    background: authorAvatar || "linear-gradient(45deg, #4F46E5, #7C3AED)",
    display: "flex",
    alignItems: "center",
    justifyContent: "center",
    color: "white",
    fontWeight: "bold",
    fontSize: "18px"
  }}>
        {authorAvatar ? <img src={authorAvatar} alt={author} style={{
    width: "100%",
    height: "100%",
    borderRadius: "50%"
  }} /> : author?.[0]?.toUpperCase()}
      </div>
      <div>
        <div style={{
    fontWeight: "400",
    fontSize: "14px"
  }}>Written by <span style={{
    fontWeight: "600"
  }}>{author}</span></div>
        <div style={{
    fontSize: "14px"
  }}>Last updated <span style={{
    fontWeight: "600"
  }}>{formatDate(lastUpdated)}</span></div>
      </div>
    </div>;
};

<ArticleInfo author="Alara" lastUpdated="2026-07-04" />

A file bucket holds documents instead of text snippets. You upload a file, MemoryPlugin extracts its text, splits it into chunks, and embeds those chunks for semantic search. After that you can ask questions about the document and get answers that cite the exact file and page.

<Note>
  File buckets are still under development. Today you can upload and search files **through the dashboard only** (the [Ask](/features/ask) tool, plus the MCP and TypingMind search tools). They are not yet wired into the browser extension or auto-injected into your chats.
</Note>

## Memory buckets vs file buckets

A [memory bucket](/features/memory-buckets) stores short text memories you write or import. A file bucket stores whole documents that get processed for search. Both live in the same bucket selector, grouped under **Memories** and **Files**.

<CardGroup cols={2}>
  <Card title="Persistent" icon="hard-drive">
    Files stay available across conversations and tools
  </Card>

  <Card title="Semantic search" icon="magnifying-glass">
    Matches passages by meaning, not just keywords
  </Card>

  <Card title="Cited answers" icon="quote-left">
    Results name the file and page they came from
  </Card>

  <Card title="Queryable" icon="arrows-cross">
    Search from Ask, the MCP server, or the TypingMind plugin
  </Card>
</CardGroup>

## Supported file types

| Format   | Extensions      | Notes                            |
| -------- | --------------- | -------------------------------- |
| PDF      | `.pdf`          | Text is extracted from the pages |
| Word     | `.docx`, `.doc` | Microsoft Word documents         |
| Markdown | `.md`           | Plain Markdown                   |
| Text     | `.txt`          | Plain text                       |

The upload area states the limit plainly: **PDF, Word, Markdown, Text (max 10MB each)**. Anything else is rejected with "Unsupported file type".

<Note>
  Scanned or image-only PDFs are not supported. The PDF has to contain selectable text, because extraction reads the text layer, not the image.
</Note>

## Create a file bucket

<Steps>
  <Step title="Open the bucket selector">
    Click the bucket dropdown at the top of the sidebar.
  </Step>

  <Step title="Choose New File Bucket">
    Click **New File Bucket**. The **Create New Bucket** dialog opens with **Bucket Type** set to **Files**.
  </Step>

  <Step title="Name it">
    Type a name under **Bucket Name** (for example, "Research Papers"), then click **Create Bucket**.
  </Step>
</Steps>

## Upload files

<Frame caption="A file bucket with the upload dropzone and files in mixed states. A file is searchable once its status reads Ready.">
  <img src="https://mintcdn.com/memoryplugin/0D7zqA9Ak-TR54pG/images/screenshots/dashboard/file-bucket.png?fit=max&auto=format&n=0D7zqA9Ak-TR54pG&q=85&s=ea6b7c29d81e6f12760d35af07d94bd9" alt="File bucket view with the upload dropzone and a table of files in Ready and Processing states" width="2720" height="1700" data-path="images/screenshots/dashboard/file-bucket.png" />
</Frame>

<Steps>
  <Step title="Select the file bucket">
    Pick your file bucket in the sidebar so its contents show.
  </Step>

  <Step title="Add files">
    In the dropzone (**Drop files here or click to upload**), drag files in or click to browse. You can add several at once; they upload one after another.
  </Step>

  <Step title="Wait for processing">
    Each file moves through **Processing** to **Ready**. A file that fails extraction shows **Failed**, and you can retry it. You can only search a file once it reads **Ready**.
  </Step>
</Steps>

The file table lists Name, Type, Size, Status, and Uploaded date. Delete a file from its row when you no longer need it.

## Query your files

Once files are **Ready**, ask questions about them from any of these:

**Ask tool.** Open [Ask](/features/ask), switch to **Files** mode, and optionally scope to one file bucket. Answers cite the file name and page.

**MCP.** Call the `search_uploaded_files` tool:

```
Tool: search_uploaded_files
Parameters:
  - query: "your search query"
  - bucketId: (optional) a specific file bucket
  - topK: (optional) number of results
```

See [MCP server](/integrations/mcp-server).

**TypingMind.** The plugin's `search_uploaded_files` function searches your documents inside a TypingMind chat. See [TypingMind plugin](/integrations/typingmind-plugin).

## Use cases

* **Reference docs.** Upload API references or style guides and query them without leaving your AI chat.
* **Research.** Store papers and reports, then ask questions that pull across several of them.
* **Project context.** Keep specs, notes, and requirements searchable for every related conversation.

## Best practices

<AccordionGroup>
  <Accordion title="One bucket per topic">
    Separate buckets for separate projects let you scope a search to just the relevant documents.
  </Accordion>

  <Accordion title="Name files clearly">
    File names appear in results. A clear name tells you at a glance which source an answer came from.
  </Accordion>

  <Accordion title="Keep files focused">
    A tight, single-topic document usually retrieves better than one huge file that mixes everything together.
  </Accordion>

  <Accordion title="Wait for Ready">
    A file is not searchable until its status reads Ready. Large files take longer to get there.
  </Accordion>
</AccordionGroup>

## Limits

* **File size:** 10 MB per file.
* **Processing:** files are queued and handled in order. Larger files take longer to become searchable.

## Next steps

<CardGroup cols={2}>
  <Card title="Ask" icon="messages" href="/features/ask">
    Query your files in Files mode
  </Card>

  <Card title="Memory Buckets" icon="folder" href="/features/memory-buckets">
    Store text memories alongside your files
  </Card>
</CardGroup>
