Welcome to Zib

Zib is your AI-powered knowledge base. Upload files, organize them into collections, and use AI to search, summarize, and answer questions across everything you've stored β€” all in one place.

πŸ“„
Upload files
PDFs, docs, images, code
πŸ€–
Ask the Agent
Chat across all your files
πŸ”
Image Search
Find images by description
🧠
Memory
AI remembers context for you

πŸ“„ Uploading Files

Your knowledge base starts with your files. Zib supports PDFs, documents, text files, images, code files, and more. Once uploaded, Zib automatically extracts the content and creates searchable embeddings.

1

Navigate to Knowledge Base

After logging in, click Knowledge Base in the sidebar. This is your main file view.
2

Upload your files

Click the Upload button (top right) or simply drag and drop files anywhere on the page. You can upload multiple files at once.
3

Wait for processing

After uploading, you'll see a Processing… badge next to each file. This means Zib is extracting text and creating AI-searchable embeddings. Once done, the badge disappears.
πŸ’‘Supported formats: PDF, TXT, MD, DOCX, XLSX, CSV, PNG, JPG, GIF, JavaScript, Python, and many more. If Zib can extract text from it, it will.

πŸ”‘ Setting Up API Keys

Zib's AI Agent uses your own LLM API key to power conversations. You choose your preferred model β€” Gemini, ChatGPT, or Claude β€” and add your API key in Settings. Your key is stored securely and never shared.

1

Get an API key from your preferred LLM provider

Choose one (or more) of the following providers and create an API key:
β€’ Google Gemini β€” Get API key at aistudio.google.com (free tier available)
β€’ OpenAI (ChatGPT) β€” Get API key at platform.openai.com
β€’ Anthropic (Claude) β€” Get API key at console.anthropic.com
2

Add your key in Settings

Go to Settings β†’ API Keys in your dashboard. Paste your API key for the provider you chose and click Save. A green dot will appear next to the provider when the key is saved.
3

Select your model in the Agent

Open the Agent page. Use the model dropdown in the top bar to select your preferred LLM (Gemini, ChatGPT, or Claude). The Agent will use the corresponding API key you saved.
πŸ’‘You can add keys for multiple providers and switch between them anytime using the model selector in the Agent. Gemini's free tier is a great way to get started at no cost.

πŸ€– Using the AI Agent

The Agent is your personal AI assistant that can search, read, and answer questions about your entire knowledge base. Make sure you've added an API key first.

1

Open the Agent

Click Agent in the sidebar to open the chat interface. Select your preferred model from the dropdown in the top bar.
2

Ask a question

Type any question. The Agent will search across all your files to find the most relevant information and give you an answer with references.
3

Ask follow-up questions

The Agent remembers the conversation context. Ask follow-up questions to dig deeper into a topic without re-explaining.
🎯Example prompts:
β€’ "Summarize all my meeting notes from this month"
β€’ "What does the Q1 report say about revenue?"
β€’ "Compare the key points across my research papers"
β€’ "Find all references to authentication in my code files"
Try it: Upload a few documents, then ask the Agent: "What are the main topics covered across all my files?"

🧠 Memory

Memory lets Zib remember important context β€” your preferences, project details, key decisions, and anything else you want the AI to recall later.

1

Open the Memory page

Click Memory in the sidebar to see all saved memories.
2

Save new memories

Click Add Memory and type information you want Zib to remember. For example: "Our project deadline is March 15th" or "The API rate limit is 100 requests per minute."
3

Memories enrich AI responses

When you ask the Agent a question, it automatically searches your memories for relevant context. This means the Agent gets smarter as you teach it more.
✨Memories work great for storing:
β€’ Project-specific context and terminology
β€’ Preferences ("Always use TypeScript")
β€’ Key facts and reference numbers
β€’ Important decisions and their reasoning
Try it: Save a memory: "My favorite programming language is Python." Then ask the Agent: "What's my preferred language?"

πŸ“ Organizing with Collections

Collections are folders that help you organize related files. You can create collections for different projects, topics, or teams, and even scope AI searches to a specific collection.

1

Create a collection

From the Knowledge Base view, click the + button next to "Collections" in the sidebar, or use the Create Collection button.
2

Add files to collections

Drag files into a collection, or use the file menu to add them. A single file can belong to multiple collections.
3

Search within a collection

When browsing a collection, you can search only within those files. This is great for focused searches when you have a large knowledge base.
πŸ“ŒUse collections to create focused context for different AI conversations. For example, keep a "Project Alpha" collection with all relevant specs, meeting notes, and designs in one place.

πŸ”— MCP Integration

Zib speaks MCP (Model Context Protocol), the open standard for connecting AI assistants to external tools. Connect Claude, Cursor, or any MCP-compatible AI to your knowledge base.

1

Generate an MCP key

Go to Developer in the sidebar, then click Generate New Key. You can optionally scope the key to a specific collection.
2

Configure your AI client

Add Zib as an MCP server in your AI client's config (e.g., Claude Desktop or Cursor). See the API Reference below for configuration examples and all available tools.
3

Use your AI with your knowledge

Your AI assistant can now search files, read documents, save memories, and more β€” all directly from your Zib knowledge base.
πŸš€MCP is the most powerful way to use Zib. Once connected, your AI assistant can autonomously search and reference your knowledge base during any conversation.
API Reference

MCP API

Connect your AI agent to Zib using the Model Context Protocol. Complete reference for all available tools.

Quickstart

Get your AI agent connected to your Zib knowledge base in under 5 minutes.

1

Create an account

Sign up at zib.app/register. The free tier includes 3 GB of storage and 2 MCP keys.

2

Upload your files

Upload documents, PDFs, images, code files, or any text content. Zib automatically extracts text and generates vector embeddings.

3

Generate an MCP key

Navigate to Settings β†’ MCP Links in your dashboard. Click Generate New Key. Copy the key.

4

Configure your AI client

Add Zib as an MCP server in your AI client's configuration:

Claude Desktop / Cursor ~/.cursor/mcp.json

{
  "mcpServers": {
    "zib": {
      "url": "https://your-zib-instance.com/mcp",
      "headers": {
        "x-api-key": "your-mcp-key-here"
      }
    }
  }
}

Using cURL directly

curl -X POST https://your-zib-instance.com/mcp \\
  -H "Content-Type: application/json" \\
  -H "x-api-key: your-mcp-key-here" \\
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/list",
    "id": 1
  }'
5

Start querying

Your AI agent can now search your knowledge base, read files, save memories, and more. Try asking:

πŸ’‘"Search my files for anything related to quarterly revenue projections"

Authentication

All MCP requests must be authenticated with an API key. Generate keys from the MCP Links page in your dashboard.

Passing your API key

Include the key in either the x-api-key header or as a Bearer token:

# Option 1: x-api-key header
curl -H "x-api-key: zib_k_abc123..." ...

# Option 2: Bearer token
curl -H "Authorization: Bearer zib_k_abc123..." ...

Key scoping

When creating a key, you can optionally scope it to a specific collection. A scoped key will only have access to files within that collection. An unscoped key has access to all files in your account plus any files shared with you.

Transport

Zib uses the Streamable HTTP MCP transport. Send all tool calls as JSON-RPC POST requests to the /mcp endpoint.

POST /mcp
Content-Type: application/json
x-api-key: your-key

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "tool_name",
    "arguments": { ... }
  },
  "id": 1
}

Tool Reference

Complete reference for all 13 MCP tools available in Zib.

list_files

List all accessible files (owned + shared with you). Returns file metadata including name, type, size, owner, timestamps, and embedding status.

Parameters

ParameterTypeRequiredDescription
collection_idnumberNoFilter by collection ID

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "list_files",
    "arguments": {}
  }
}

Example Response

[
  {
    "id": 42,
    "name": "meeting-notes.pdf",
    "type": "application/pdf",
    "size": 184320,
    "owner": "alice",
    "created": "2026-02-10T14:30:00Z",
    "updated": "2026-02-10T14:30:00Z",
    "embedding_status": "complete",
    "shared": false
  }
]

read_file

Read the content of a specific file. Returns extracted text for documents and PDFs, or base64-encoded data for images.

Parameters

ParameterTypeRequiredDescription
file_idnumberYesID of the file to read

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "read_file",
    "arguments": { "file_id": 42 }
  }
}

Example Response

{
  "content": [
    {
      "type": "text",
      "text": "File: meeting-notes.pdf\\n\\nQ1 Planning Meeting\\n..."
    }
  ]
}

upload_file

Upload a file to the knowledge base. The content must be base64-encoded. Returns a file_id that can be used with get_upload_status to track processing. Supports images, PDFs, text, code files, Office documents, and more.

Parameters

ParameterTypeRequiredDescription
filenamestringYesOriginal filename including extension (e.g. "report.pdf")
contentstringYesBase64-encoded file content
collection_idnumberNoOptional collection ID to add the file to

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "upload_file",
    "arguments": {
      "filename": "notes.md",
      "content": "IyBNZWV0aW5nIE5vdGVzCi0gRGlzY3Vzc2VkIFExIHRhcmdldHM="
    }
  }
}

Example Response

{
  "file_id": 87,
  "filename": "notes.md",
  "size_bytes": 42,
  "mime_type": "text/markdown",
  "status": "processing",
  "message": "File uploaded successfully. Use get_upload_status with the file_id to check when processing is complete."
}

get_upload_status

Check the processing status of an uploaded file. Use this after upload_file to know when the file is fully processed and searchable. Status values: pending, processing, done, or error.

Parameters

ParameterTypeRequiredDescription
file_idnumberYesThe file ID returned from upload_file

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "get_upload_status",
    "arguments": { "file_id": 87 }
  }
}

Example Response

{
  "file_id": 87,
  "filename": "notes.md",
  "size_bytes": 42,
  "mime_type": "text/markdown",
  "status": "done",
  "created_at": "2026-03-15T01:15:00Z",
  "updated_at": "2026-03-15T01:15:03Z"
}

search_text

Semantically search across all text content in the knowledge base. Uses vector embeddings to find results by meaning, not just keywords.

Parameters

ParameterTypeRequiredDescription
querystringYesThe search query
limitnumberNoMax results (default 5)
collection_idnumberNoSearch within a specific collection

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "search_text",
    "arguments": {
      "query": "quarterly revenue projections",
      "limit": 3
    }
  }
}

Example Response

[1] File: q1-report.pdf (ID: 42)
    Owner: alice | Uploaded: 2026-01-15 | Size: 180KB
    Similarity: 92.3%
    Content: Revenue projections for Q1 show a 15% increase...

[2] File: finance-notes.txt (ID: 38)
    Owner: alice | Uploaded: 2026-01-10 | Size: 12KB
    Similarity: 84.7%
    Content: Updated revenue targets based on market analysis...

search_images

Search images using a text description (text→image) or by similarity to another image (reverse image search). Powered by CLIP embeddings.

Parameters

ParameterTypeRequiredDescription
querystringNoText description to search images by
image_file_idnumberNoFile ID of an image for reverse image search
limitnumberNoMax results (default 5)

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "search_images",
    "arguments": {
      "query": "architecture diagram with microservices"
    }
  }
}

Example Response

[1] File: system-arch.png (ID: 55)
    Owner: bob | Uploaded: 2026-02-01 | Size: 340KB
    Similarity: 78%

[2] File: infra-overview.jpg (ID: 61)
    Owner: alice | Uploaded: 2026-01-28 | Size: 215KB
    Similarity: 65%

list_collections

List all collections the user has. Collections are organizational folders for grouping related files together.

Parameters

This tool takes no parameters.

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "list_collections",
    "arguments": {}
  }
}

Example Response

[
  {
    "id": 1,
    "name": "Project Alpha",
    "description": "All docs related to Project Alpha",
    "file_count": 12,
    "is_default": false
  },
  {
    "id": 2,
    "name": "Research Papers",
    "description": null,
    "file_count": 8,
    "is_default": false
  }
]

list_collection_files

List all files within a specific collection. Accepts either the collection name (case-insensitive) or its numeric ID.

Parameters

ParameterTypeRequiredDescription
collectionstringYesCollection name (case-insensitive) or numeric collection ID

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "list_collection_files",
    "arguments": { "collection": "Project Alpha" }
  }
}

Example Response

{
  "collection": {
    "id": 1,
    "name": "Project Alpha",
    "description": "All docs related to Project Alpha"
  },
  "files": [
    {
      "id": 42,
      "name": "spec.pdf",
      "type": "application/pdf",
      "size": 184320,
      "uploaded": "2026-02-10T14:30:00Z"
    }
  ]
}

search_in_collection

Semantically search within a specific collection. Same as search_text but scoped to a single collection.

Parameters

ParameterTypeRequiredDescription
collection_idnumberYesCollection ID to search within
querystringYesSearch query
limitnumberNoMax results (default 5)

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "search_in_collection",
    "arguments": {
      "collection_id": 1,
      "query": "API rate limits",
      "limit": 3
    }
  }
}

Example Response

[1] File: api-docs.md (ID: 44)
    Owner: alice | Uploaded: 2026-02-05 | Size: 8KB
    Similarity: 91.2%
    Content: Rate limiting is set to 100 requests per minute...

save_memory

Save a memory or note for later retrieval. The content is automatically embedded for semantic search.

Parameters

ParameterTypeRequiredDescription
contentstringYesThe memory content to save
metadataobjectNoOptional metadata key-value pairs (e.g. source, tags)

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "save_memory",
    "arguments": {
      "content": "User prefers TypeScript over JavaScript for all new projects",
      "metadata": { "source": "conversation", "topic": "preferences" }
    }
  }
}

Example Response

Memory saved (ID: 17)

search_memory

Search through stored memories by semantic similarity. Returns the most relevant memories ranked by match.

Parameters

ParameterTypeRequiredDescription
querystringYesSearch query
limitnumberNoMax results (default 5)

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "search_memory",
    "arguments": {
      "query": "programming language preferences"
    }
  }
}

Example Response

[1] Memory (ID: 17)
    Created: 2026-02-15 | Source: conversation
    Similarity: 94.1%
    Content: User prefers TypeScript over JavaScript for all new projects

get_usage

Get storage usage and account tier information.

Parameters

This tool takes no parameters.

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "get_usage",
    "arguments": {}
  }
}

Example Response

{
  "tier": "free",
  "storage_used_mb": 142,
  "total_files": 28,
  "total_memories": 15
}

get_file_metadata

Get detailed metadata for a specific file, including owner info, timestamps, size, MIME type, embedding status, and collections.

Parameters

ParameterTypeRequiredDescription
file_idnumberYesID of the file

Example Request

{
  "method": "tools/call",
  "params": {
    "name": "get_file_metadata",
    "arguments": { "file_id": 42 }
  }
}

Example Response

{
  "id": 42,
  "name": "meeting-notes.pdf",
  "mime_type": "application/pdf",
  "size_bytes": 184320,
  "size_human": "180KB",
  "owner": "alice",
  "owner_email": "[email protected]",
  "created_at": "2026-02-10T14:30:00Z",
  "updated_at": "2026-02-10T14:30:00Z",
  "last_modified_by": "alice",
  "embedding_status": "complete",
  "collections": [
    { "id": 1, "name": "Project Alpha" }
  ]
}