Memory

WeKnora

Try it

Import documents and run hybrid vector-plus-keyword search across WeKnora knowledge bases via the REST API.

What it does

Calls the WeKnora REST API to upload files, URLs, or Markdown into a knowledge base and to query that base with hybrid search. Operations covered include listing knowledge bases, importing content (file upload via multipart/form-data, web URL, or manual Markdown), polling parse_status until parsing completes, and editing or deleting entries. Search modes are per-KB hybrid search (vector + keyword) and cross-KB semantic search, with results including a relevance score and chunk metadata. Authentication uses an X-API-Key header set through the WEKNORA_BASE_URL and WEKNORA_API_KEY environment variables.

When to use it

  • Uploading a PDF and polling parse_status until parsing completes
  • Importing a web article via URL into a knowledge base
  • Writing Markdown notes directly into a knowledge base
  • Running hybrid search across one or multiple knowledge bases

The skill document

WeKnora

Knowledge base document import and retrieval through the WeKnora REST API.

Setup

  1. Get your API Key from the WeKnora web UI (account settings page)
  2. Configure environment variables:
export WEKNORA_BASE_URL="https://your-server.com/api/v1"
export WEKNORA_API_KEY="sk-your-api-key"

Add the above to ~/.zshrc or ~/.bashrc to persist across sessions.

Credential Check

Verify credentials before any API call. Stop and prompt the user if unset.

if [ -z "$WEKNORA_BASE_URL" ] || [ -z "$WEKNORA_API_KEY" ]; then
  echo "Missing WeKnora credentials. Set WEKNORA_BASE_URL and WEKNORA_API_KEY per Setup."
  exit 1
fi

API Call Template

All requests go to $WEKNORA_BASE_URL with a shared header set. Define a helper:

wk_api() {
  local method="$1" endpoint="$2" body="$3"
  curl -s -X "$method" "$WEKNORA_BASE_URL/$endpoint" \
    -H "X-API-Key: $WEKNORA_API_KEY" \
    -H "Content-Type: application/json" \
    -H "X-Request-ID: $(uuidgen 2>/dev/null || date +%s)" \
    ${body:+-d "$body"}
}

For file uploads use curl -F directly (multipart/form-data).

API Decision Table

User IntentEndpointKey Params
List knowledge basesGET /knowledge-bases
View KB detailsGET /knowledge-bases/:id
Upload a filePOST /knowledge-bases/:id/knowledge/filefile (form-data), enable_multimodel
Import a web pagePOST /knowledge-bases/:id/knowledge/urlurl, enable_multimodel
Write Markdown contentPOST /knowledge-bases/:id/knowledge/manualtitle, content, tag_id
Check upload progressGET /knowledge/:idwatch parse_status
Browse KB contentsGET /knowledge-bases/:id/knowledgepage, page_size, tag_id
Edit Markdown knowledgePUT /knowledge/manual/:idtitle, content
Delete a knowledge entryDELETE /knowledge/:id
Search within a KBGET /knowledge-bases/:id/hybrid-searchquery_text, match_count, thresholds
Search across KBsPOST /knowledge-searchquery, knowledge_base_ids

Common Workflows

Upload File and Wait for Parsing

# 1. Find target KB
wk_api GET "knowledge-bases"
# -> pick kb_id from data[].id

# 2. Upload file
curl -s -X POST "$WEKNORA_BASE_URL/knowledge-bases//knowledge/file" \
  -H "X-API-Key: $WEKNORA_API_KEY" \
  -F 'file=@document.pdf' -F 'enable_multimodel=true'
# -> get knowledge_id from data.id

# 3. Poll until parsed
wk_api GET "knowledge/"
# -> repeat until data.parse_status == "completed"

Import URL

wk_api POST "knowledge-bases//knowledge/url" \
  '{"url": "https://example.com/article", "enable_multimodel": true}'
# -> poll knowledge/:id same as file upload

Write Markdown Knowledge

wk_api POST "knowledge-bases//knowledge/manual" \
  '{"title": "Meeting Notes", "content": "# Q1 Review\n\nKey points..."}'

Search Knowledge

# Single-KB hybrid search (vector + keyword)
wk_api GET "knowledge-bases//hybrid-search" \
  '{"query_text": "deployment process", "match_count": 5}'

# Cross-KB semantic search
wk_api POST "knowledge-search" \
  '{"query": "deployment process", "knowledge_base_ids": ["kb-1", "kb-2"]}'

Browse and Read KB Contents

# List knowledge entries (paginated)
wk_api GET "knowledge-bases//knowledge?page=1&page_size=20"

# Get full detail of one entry
wk_api GET "knowledge/"

Core Response Fields

Knowledge Base (GET /knowledge-bases): data[]id, name, description, type (document | faq), embedding_model_id, knowledge_count, chunk_count, is_processing, created_at.

Knowledge Entry (GET /knowledge/:id): dataid, title, description (auto-generated summary), type (file | url | manual), parse_status, enable_status, file_name, file_type, file_size, source (URL origin), created_at, processed_at, error_message.

Search Result (hybrid-search): data[]id, content (chunk text), score (relevance 0–1), knowledge_id, knowledge_title, knowledge_filename, chunk_index, chunk_type (text | summary | image), match_type, metadata.

Paginated List (GET .../knowledge): data[] + total, page, page_size.

Enum Values

  • parse_status: pendingprocessingcompleted | failed
  • enable_status: enabled | disabled (knowledge becomes enabled after successful parsing)
  • type (knowledge): file (uploaded file), url (web import), manual (Markdown)
  • type (knowledge base): document (standard), faq (FAQ pairs)
  • chunk_type: text (regular chunk), summary (auto-generated summary), image (image chunk)

Pagination

  • Offset pagination (GET .../knowledge, GET /sessions): use page and page_size query params. Response includes total for calculating pages.
  • Hybrid search: returns up to match_count results (no pagination; increase match_count for more).

Notes

  • GET /knowledge-bases/:id/hybrid-search uses GET method but requires a JSON request body — pass -d '{...}' with curl.
  • After uploading, knowledge enable_status starts as disabled and auto-switches to enabled once parse_status reaches completed.
  • File upload uses multipart/form-data, not JSON. Use curl -F 'file=@path'.
  • file_type is auto-detected from the uploaded file (supports pdf, docx, xlsx, pptx, txt, md, csv, html, etc.).
  • Search score ranges from 0 to 1; higher is more relevant. Adjust vector_threshold (default ~0.5) to filter low-quality matches.
  • When parse_status is failed, check error_message field for the failure reason before retrying with POST /knowledge/:id/reparse.

Error Handling

All errors return:

{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable description",
    "details": "Optional extra info"
  }
}
HTTP CodeMeaningSuggested Action
400Bad requestCheck required fields and param formats
401UnauthorizedVerify WEKNORA_API_KEY is correct
403ForbiddenConfirm you have access to this resource
404Not foundCheck resource ID exists
413Payload too largeReduce file size or split content
500Server errorRetry after a short delay

Questions people ask

Which file types are supported for upload?
WeKnora auto-detects file_type from the uploaded file. The documentation explicitly lists pdf, docx, xlsx, pptx, txt, md, csv, and html as supported formats.
How does hybrid search work?
Per-KB hybrid search sends query_text to GET /knowledge-bases/:id/hybrid-search and combines vector and keyword matching. Results carry a relevance score from 0 to 1 and can be filtered with vector_threshold (default around 0.5).
How is upload progress tracked?
After uploading, poll GET /knowledge/:id and watch parse_status, which moves through pending, then processing, then completed or failed. The entry's enable_status auto-switches from disabled to enabled once parse_status reaches completed.

Related skills

Organize, format, and publish knowledge-base articles and documentation. Use when you need to convert raw notes, meeting transcripts, or scattered content into structured, publication-ready knowledge base entries with proper metadata, cross-references, and version tracking.

1 installs

Import documents and retrieve knowledge through the Keystone REST API. Use for uploading files, URLs, or Markdown to a knowledge base; hybrid search within a...

1 installs

Record, organize, search, and connect personal knowledge. Use when the user wants to capture notes, build a knowledge base, search personal notes, review sav...

16 installs

Answer Research KB dialogue questions with team-overview-guided web search, external citations, optional reference attachments, and no QA persistence.

Memora — Personal AI Knowledge Base with interactive knowledge graph visualization. A self-hosted system for managing, retrieving, and querying your personal...

Read, capture, search, and link notes in a local Markdown vault with approval-gated writes and attributed appends.

22 installs