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.
π 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.
Navigate to Knowledge Base
Upload your files
Wait for processing
π 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.
Get an API key from your preferred LLM provider
Add your key in Settings
Select your model in the Agent
π€ 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.
Open the Agent
Ask a question
Ask follow-up questions
β’ "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"
π Reverse Image Search
Zib uses CLIP, a state-of-the-art AI vision model, to understand the content of your images. You can search for images using natural language descriptions β no tagging or metadata needed.
Upload images
Search by description
Or use "similar to" search
π§ Memory
Memory lets Zib remember important context β your preferences, project details, key decisions, and anything else you want the AI to recall later.
Open the Memory page
Save new memories
Memories enrich AI responses
β’ Project-specific context and terminology
β’ Preferences ("Always use TypeScript")
β’ Key facts and reference numbers
β’ Important decisions and their reasoning
π 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.
Create a collection
Add files to collections
Search within a collection
π 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.
Generate an MCP key
Configure your AI client
Use your AI with your knowledge
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.
Create an account
Sign up at zib.app/register. The free tier includes 3 GB of storage and 2 MCP keys.
Upload your files
Upload documents, PDFs, images, code files, or any text content. Zib automatically extracts text and generates vector embeddings.
Generate an MCP key
Navigate to Settings β MCP Links in your dashboard. Click Generate New Key. Copy the key.
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
}'Start querying
Your AI agent can now search your knowledge base, read files, save memories, and more. Try asking:
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
| Parameter | Type | Required | Description |
|---|---|---|---|
collection_id | number | No | Filter 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
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | Yes | ID 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
| Parameter | Type | Required | Description |
|---|---|---|---|
filename | string | Yes | Original filename including extension (e.g. "report.pdf") |
content | string | Yes | Base64-encoded file content |
collection_id | number | No | Optional 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
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | Yes | The 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
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | The search query |
limit | number | No | Max results (default 5) |
collection_id | number | No | Search 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
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | No | Text description to search images by |
image_file_id | number | No | File ID of an image for reverse image search |
limit | number | No | Max 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
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string | Yes | Collection 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
| Parameter | Type | Required | Description |
|---|---|---|---|
collection_id | number | Yes | Collection ID to search within |
query | string | Yes | Search query |
limit | number | No | Max 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
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | Yes | The memory content to save |
metadata | object | No | Optional 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
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Search query |
limit | number | No | Max 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 projectsget_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
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | number | Yes | ID 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" }
]
}