{
  "schemaVersion": "1.0",
  "item": {
    "slug": "orchata",
    "name": "Orchata",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ehudsn/orchata",
    "canonicalUrl": "https://clawhub.ai/ehudsn/orchata",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/orchata",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=orchata",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/orchata"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/orchata",
    "agentPageUrl": "https://openagent3.xyz/skills/orchata/agent",
    "manifestUrl": "https://openagent3.xyz/skills/orchata/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/orchata/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Orchata Skills",
        "body": "This document describes how to effectively use Orchata, a RAG (Retrieval-Augmented Generation) platform with tree-based document indexing. Load this into your context to interact with Orchata knowledge bases."
      },
      {
        "title": "What is Orchata?",
        "body": "Orchata is a knowledge management platform that:\n\nOrganizes documents into Spaces - Logical containers for related content\nUses tree-based indexing - Documents are parsed into hierarchical structures with sections, summaries, and page ranges\nProvides semantic search - Find relevant content using natural language queries\nExposes MCP tools - AI assistants can directly manage and query knowledge bases"
      },
      {
        "title": "Spaces",
        "body": "A Space is a container for related documents. Think of it as a folder with semantic search capabilities.\n\nEach space has a name, description, and optional icon\nDescriptions are used by smart_query to recommend relevant spaces\nSpaces can be archived (soft-deleted)"
      },
      {
        "title": "Documents",
        "body": "A Document is content within a space. Supported formats include:\n\nPDF (text-based and scanned with OCR)\nWord documents (.docx)\nExcel spreadsheets (.xlsx)\nPowerPoint presentations (.pptx)\nMarkdown files (.md)\nPlain text files (.txt)\nImages (PNG, JPG, etc.)\n\nDocument Status:\n\nStatusDescriptionPENDINGUploaded, waiting for processingPROCESSINGBeing parsed and indexedCOMPLETEDReady for queriesFAILEDProcessing error occurred\n\nImportant: Only query documents with status: \"COMPLETED\". Other statuses won't return results."
      },
      {
        "title": "Document Trees",
        "body": "Documents are indexed into hierarchical tree structures:\n\nEach tree has nodes representing sections/chapters\nNodes contain: title, summary, startPage, endPage, textContent\nTrees enable precise navigation of large documents"
      },
      {
        "title": "Queries",
        "body": "Two types of queries are available:\n\nquery_spaces - Search document content using tree-based reasoning\nsmart_query - Discover which spaces are relevant for a query"
      },
      {
        "title": "Space Management",
        "body": "list_spaces\n\nList all knowledge spaces in the organization.\n\nlist_spaces\nlist_spaces with status=\"active\"\nlist_spaces with page=1 pageSize=20\n\nParameters:\n\npage (number, optional): Page number (default: 1)\npageSize (number, optional): Items per page (default: 10)\nstatus (string, optional): Filter by active, archived, or all\n\nmanage_space\n\nCreate, get, update, or delete a space.\n\nmanage_space with action=\"create\" name=\"Product Docs\" description=\"Technical documentation\"\nmanage_space with action=\"create\" name=\"Legal\" description=\"Case files\" icon=\"briefcase\"\nmanage_space with action=\"get\" id=\"space_abc123\"\nmanage_space with action=\"update\" id=\"space_abc123\" description=\"Updated description\"\nmanage_space with action=\"delete\" id=\"space_abc123\"\n\nParameters:\n\naction (string, required): create, get, update, or delete\nid (string): Space ID (required for get/update/delete)\nname (string): Space name (required for create)\ndescription (string, optional): Space description\nicon (string, optional): Icon name. Defaults to \"folder\"\nslug (string, optional): URL-friendly identifier\nisArchived (boolean, optional): Archive status (for update)\n\nValid Icons:\nfolder, book, file-text, database, package, archive, briefcase, inbox, layers, box\n\nIf an invalid icon is provided, the tool returns an error with the list of valid options."
      },
      {
        "title": "Document Management",
        "body": "list_documents\n\nList documents in a space.\n\nlist_documents with spaceId=\"space_abc123\"\nlist_documents with spaceId=\"space_abc123\" status=\"completed\"\nlist_documents with spaceId=\"space_abc123\" status=\"all\"\n\nParameters:\n\nspaceId (string, required): Space ID\npage (number, optional): Page number\npageSize (number, optional): Items per page (max: 100)\nstatus (string, optional): Filter by status. Values: pending, processing, completed, failed, or all. Omitting returns all documents.\n\nNote: Status values are case-insensitive (completed and COMPLETED both work).\n\nsave_document\n\nUpload or upsert documents (single or batch).\n\nSingle document:\n\nsave_document with spaceId=\"space_abc123\" filename=\"guide.md\" content=\"# Guide\\n\\nContent here...\"\n\nBatch upload:\n\nsave_document with spaceId=\"space_abc123\" documents=[{\"filename\": \"doc1.md\", \"content\": \"...\"}, {\"filename\": \"doc2.md\", \"content\": \"...\"}]\n\nParameters:\n\nspaceId (string, required): Space ID\nfilename (string): Filename (required for single)\ncontent (string): Content (required for single)\ndocuments (array, optional): Array of {filename, content, metadata} for batch\nmetadata (object, optional): Custom key-value pairs\n\nget_document\n\nGet document content by ID or filename. Returns processed markdown text.\n\nget_document with spaceId=\"space_abc123\" id=\"doc_xyz789\"\nget_document with spaceId=\"space_abc123\" filename=\"guide.md\"\nget_document with spaceId=\"*\" filename=\"guide.md\"\n\nParameters:\n\nspaceId (string, required): Space ID, or * to search all spaces (requires filename)\nid (string, optional): Document ID\nfilename (string, optional): Filename\n\nNotes:\n\nEither id or filename is required\nUse spaceId=\"*\" to search all spaces when you know the filename but not the space\nFor completed documents, returns the extracted markdown text (not raw PDF binary)\nWhen using *, the response includes the spaceId where the document was found\n\nupdate_document\n\nUpdate document content or metadata.\n\nupdate_document with spaceId=\"space_abc123\" id=\"doc_xyz789\" content=\"New content...\"\nupdate_document with spaceId=\"space_abc123\" id=\"doc_xyz789\" append=true content=\"Additional content\"\n\nParameters:\n\nspaceId (string, required): Space ID\nid (string, required): Document ID\ncontent (string, optional): New content\nmetadata (object, optional): New metadata\nappend (boolean, optional): Append instead of replace\nseparator (string, optional): Separator for append mode\n\ndelete_document\n\nPermanently delete a document.\n\ndelete_document with spaceId=\"space_abc123\" id=\"doc_xyz789\"\n\nParameters:\n\nspaceId (string, required): Space ID\nid (string, required): Document ID"
      },
      {
        "title": "Query Tools",
        "body": "query_spaces\n\nSearch documents across one or more spaces using tree-based reasoning.\n\nquery_spaces with query=\"How do I authenticate API requests?\"\nquery_spaces with query=\"installation guide\" spaceIds=\"space_abc123\"\nquery_spaces with query=\"error handling\" spaceIds=[\"space_abc\", \"space_def\"] topK=10\n\nParameters:\n\nquery (string, required): Natural language search query\nspaceIds (string or array, optional): Space ID(s) to search. Omit or use * for all spaces\ntopK (number, optional): Maximum results (default: 10)\ncompact (boolean, optional): Use compact format (default: false). See When to Use Compact below.\n\nWhen to Use Compact:\n\nModeWhen to useWhat you getcompact=false (default)Most queries. Any time you need actual data, facts, numbers, dates, or details from documents.Full results with document metadata, tree context, page ranges, and complete content.compact=trueBroad discovery queries where you only need to know which documents are relevant, not their content.Minimal results: just content snippet, source filename, and score.\n\nRule of thumb: Default to compact=false. Only use compact=true when you're browsing/surveying and don't need the actual content yet.\n\nResponse (compact=true format):\n\n{\n  \"results\": [\n    {\n      \"content\": \"Relevant text content...\",\n      \"source\": \"filename.pdf\",\n      \"score\": 0.95\n    }\n  ],\n  \"total\": 5\n}\n\nsmart_query\n\nDiscover which spaces are relevant for a query using LLM reasoning.\n\nsmart_query with query=\"How do I install the SDK?\"\nsmart_query with query=\"billing questions\" maxSpaces=3\n\nParameters:\n\nquery (string, required): Query to find relevant spaces for\nmaxSpaces (number, optional): Maximum spaces to return (default: 5)\n\nResponse:\n\n{\n  \"query\": \"How do I install the SDK?\",\n  \"relevantSpaces\": [\n    {\"spaceId\": \"space_abc123\", \"relevance\": \"Contains SDK installation guides\"},\n    {\"spaceId\": \"space_def456\", \"relevance\": \"Has developer tutorials\"}\n  ],\n  \"totalFound\": 2\n}\n\nUse case: When you don't know which space to search, use smart_query first to discover relevant spaces, then use query_spaces with those space IDs."
      },
      {
        "title": "Tree Visibility Tools",
        "body": "These tools let you explore the hierarchical structure of indexed documents.\n\nget_document_tree\n\nGet the tree structure of a document showing sections, summaries, and page ranges.\n\nget_document_tree with spaceId=\"space_abc123\" documentId=\"doc_xyz789\"\n\nParameters:\n\nspaceId (string, required): Space ID\ndocumentId (string, required): Document ID\n\nResponse:\n\n{\n  \"documentId\": \"doc_xyz789\",\n  \"totalPages\": 45,\n  \"totalNodes\": 12,\n  \"nodes\": [\n    {\n      \"nodeId\": \"0001\",\n      \"title\": \"Introduction\",\n      \"summary\": \"Overview of the system architecture...\",\n      \"pages\": \"1-5\",\n      \"depth\": 0\n    },\n    {\n      \"nodeId\": \"0002\",\n      \"title\": \"Installation\",\n      \"summary\": \"Step-by-step installation guide...\",\n      \"pages\": \"6-12\",\n      \"depth\": 0\n    }\n  ]\n}\n\nUse case: Use this to understand a document's structure before drilling into specific sections.\n\nget_tree_node\n\nGet the full text content of a specific tree node/section.\n\nget_tree_node with documentId=\"doc_xyz789\" nodeId=\"0002\"\n\nParameters:\n\ndocumentId (string, required): Document ID\nnodeId (string, required): Node ID from the tree structure\n\nResponse:\n\n{\n  \"documentId\": \"doc_xyz789\",\n  \"filename\": \"manual.pdf\",\n  \"nodeId\": \"0002\",\n  \"title\": \"Installation\",\n  \"summary\": \"Step-by-step installation guide...\",\n  \"pages\": \"6-12\",\n  \"depth\": 0,\n  \"content\": \"## Installation\\n\\nTo install the software, follow these steps:\\n\\n1. Download the installer...\\n\\n...\"\n}\n\nUse case: After viewing the tree structure, use this to read the full content of a specific section."
      },
      {
        "title": "Pattern 1: Search for Information (Default Approach)",
        "body": "For most questions, a single query_spaces call is all you need. Start here before trying multi-step workflows.\n\nquery_spaces with query=\"your question\"\n\nThis searches all spaces with full details (compact=false by default). One call, done.\n\nIf you want to narrow to specific spaces:\n\nquery_spaces with query=\"your question\" spaceIds=\"known_space_id\"\n\nIf you truly don't know which spaces exist:\n\nsmart_query with query=\"your question\"\n# Then use the returned spaceIds:\nquery_spaces with query=\"your question\" spaceIds=[\"returned_space_id\"]\n\nAvoid over-searching. The multi-step workflow (smart_query -> query_spaces -> get_document_tree -> get_tree_node) is rarely necessary. For most questions, a single query_spaces call returns the answer directly. Only escalate to tree browsing if results are insufficient."
      },
      {
        "title": "Pattern 2: Look Up Specific Data",
        "body": "When looking for specific facts, numbers, dates, names, or details:\n\nJust query directly -- one call:\n\nquery_spaces with query=\"total amount on invoice #1234\"\n\nThe default compact=false returns full content with document metadata, so you get the actual data you need in one step. Do not use compact=true for data lookups -- it strips the detail you need."
      },
      {
        "title": "Pattern 3: Browse a Large Document",
        "body": "When you need to navigate a large document's structure:\n\nGet the document structure:\nget_document_tree with spaceId=\"space_id\" documentId=\"doc_id\"\n\n\n\nIdentify relevant sections from the node titles and summaries\n\n\nRead specific sections:\nget_tree_node with documentId=\"doc_id\" nodeId=\"relevant_node_id\""
      },
      {
        "title": "Pattern 4: Add New Content",
        "body": "When adding documents to a knowledge base:\n\nFind or create the appropriate space:\nlist_spaces\n# or\nmanage_space with action=\"create\" name=\"New Space\" description=\"...\"\n\n\n\nUpload the content:\nsave_document with spaceId=\"space_id\" filename=\"document.md\" content=\"...\"\n\n\n\nWait for processing (status will change from PENDING -> PROCESSING -> COMPLETED)\n\n\nVerify it's ready:\nlist_documents with spaceId=\"space_id\" status=\"COMPLETED\""
      },
      {
        "title": "manage_space - Valid Icons",
        "body": "When creating or updating a space, use one of these icon values:\n\nfolder (default)\nbook\nfile-text\ndatabase\npackage\narchive\nbriefcase\ninbox\nlayers\nbox\n\nInvalid icons will return a helpful error message with the list of valid options."
      },
      {
        "title": "list_documents - Status Parameter",
        "body": "The status parameter accepts the following values (case-insensitive):\n\n\"all\" - Returns documents in any status (COMPLETED, FAILED, PENDING, PROCESSING)\n\"completed\" - Returns only successfully processed documents\n\"failed\" - Returns only documents that failed processing (includes errorMessage field)\n\"pending\" - Returns documents waiting to be processed\n\"processing\" - Returns documents currently being processed\n\nDocuments with status=\"FAILED\" will include an errorMessage field explaining what went wrong during processing."
      },
      {
        "title": "save_document - Processing Workflow",
        "body": "Documents are processed asynchronously:\n\nsave_document returns immediately with status=\"PROCESSING\"\nBackground job generates embeddings and indexes the document (typically 1-3 seconds)\nStatus changes to \"COMPLETED\" when ready\nDocument becomes searchable via query_spaces\n\nTo check completion status:\n\nUse get_document to check a specific document's status\nUse list_documents with status=\"processing\" to see all processing documents\nUse list_documents with status=\"failed\" to see any failures\n\nExample:\n\n// Save document\nconst result = await save_document({...});\n// result.document.status === \"PROCESSING\"\n\n// Check status after a moment\nconst doc = await get_document({id: result.document.id});\n// doc.status === \"COMPLETED\" (when ready)"
      },
      {
        "title": "get_tree_node - Content Availability",
        "body": "get_tree_node may return \"(No text content cached for this node)\" for certain nodes. This occurs for:\n\nStructural/organizational nodes without associated text content\nNodes that serve as section headers in the tree hierarchy\n\nThis is expected behavior.\n\nTo read actual document content:\n\nUse get_document to retrieve the full processed markdown\nUse query_spaces to search and retrieve relevant content chunks\n\nThe tree structure (via get_document_tree) is always available and shows document organization, summaries, and page ranges."
      },
      {
        "title": "DO",
        "body": "Start with a single query_spaces call - it usually has the answer in one step\nUse compact=false (the default) for most queries - you get full content and context\nCheck document status before querying - only COMPLETED documents are searchable\nUse descriptive queries - natural language works best\nUse tree tools for large documents - navigate structure instead of reading everything\nWrite good space descriptions - they're used by smart_query for discovery"
      },
      {
        "title": "DON'T",
        "body": "Don't over-search - avoid multi-step workflows (smart_query -> query_spaces -> get_document_tree -> get_tree_node) when a single query_spaces call suffices\nDon't use compact=true for data lookups - it strips the content you need; only use it for broad discovery\nDon't query PENDING/PROCESSING documents - they won't return results\nDon't use very short queries - more context = better results\nDon't forget to check processing status after uploading new documents"
      },
      {
        "title": "Error Handling",
        "body": "Common errors and solutions:\n\nErrorCauseSolution\"Document not found\"Wrong ID or no accessVerify the document ID with list_documents\"Space not found\"Wrong ID or archivedUse list_spaces to find valid space IDsEmpty search resultsDocument not COMPLETED or no matchesCheck document status; try broader query\"Tree not found\"Document uses vector indexing or not processedCheck if document status is COMPLETED\"Invalid icon\"Icon name not in allowed listUse one of: folder, book, file-text, database, package, archive, briefcase, inbox, layers, box\"No text content cached\"Tree node content not cachedThis is normal for structural nodes; use get_document for full content"
      },
      {
        "title": "Troubleshooting Tips",
        "body": "If save_document fails:\n\nVerify the space exists with manage_space with action=\"get\" id=\"...\"\nEnsure content is valid text/markdown\nCheck that the space is not archived\n\nIf list_documents returns 0 results:\n\nTry status=\"all\" or omit the status parameter entirely\nVerify the spaceId is correct with list_spaces\nCheck if documents are still processing (status=\"processing\")\n\nIf get_tree_node returns no content:\n\nSome nodes are structural and don't have cached text content\nUse get_document to get the full processed document text instead\nOr use query_spaces to search for specific content"
      },
      {
        "title": "Quick Reference",
        "body": "TaskToolExampleList all spaceslist_spaceslist_spaces with status=\"active\"Create a spacemanage_spacemanage_space with action=\"create\" name=\"Docs\"List documentslist_documentslist_documents with spaceId=\"...\"Upload contentsave_documentsave_document with spaceId=\"...\" content=\"...\"Get document textget_documentget_document with spaceId=\"...\" id=\"...\"Search contentquery_spacesquery_spaces with query=\"...\"Find relevant spacessmart_querysmart_query with query=\"...\"View doc structureget_document_treeget_document_tree with spaceId=\"...\" documentId=\"...\"Read a sectionget_tree_nodeget_tree_node with documentId=\"...\" nodeId=\"...\""
      }
    ],
    "body": "Orchata Skills\n\nThis document describes how to effectively use Orchata, a RAG (Retrieval-Augmented Generation) platform with tree-based document indexing. Load this into your context to interact with Orchata knowledge bases.\n\nWhat is Orchata?\n\nOrchata is a knowledge management platform that:\n\nOrganizes documents into Spaces - Logical containers for related content\nUses tree-based indexing - Documents are parsed into hierarchical structures with sections, summaries, and page ranges\nProvides semantic search - Find relevant content using natural language queries\nExposes MCP tools - AI assistants can directly manage and query knowledge bases\nCore Concepts\nSpaces\n\nA Space is a container for related documents. Think of it as a folder with semantic search capabilities.\n\nEach space has a name, description, and optional icon\nDescriptions are used by smart_query to recommend relevant spaces\nSpaces can be archived (soft-deleted)\nDocuments\n\nA Document is content within a space. Supported formats include:\n\nPDF (text-based and scanned with OCR)\nWord documents (.docx)\nExcel spreadsheets (.xlsx)\nPowerPoint presentations (.pptx)\nMarkdown files (.md)\nPlain text files (.txt)\nImages (PNG, JPG, etc.)\n\nDocument Status:\n\nStatus\tDescription\nPENDING\tUploaded, waiting for processing\nPROCESSING\tBeing parsed and indexed\nCOMPLETED\tReady for queries\nFAILED\tProcessing error occurred\n\nImportant: Only query documents with status: \"COMPLETED\". Other statuses won't return results.\n\nDocument Trees\n\nDocuments are indexed into hierarchical tree structures:\n\nEach tree has nodes representing sections/chapters\nNodes contain: title, summary, startPage, endPage, textContent\nTrees enable precise navigation of large documents\nQueries\n\nTwo types of queries are available:\n\nquery_spaces - Search document content using tree-based reasoning\nsmart_query - Discover which spaces are relevant for a query\nMCP Tools Reference\nSpace Management\nlist_spaces\n\nList all knowledge spaces in the organization.\n\nlist_spaces\nlist_spaces with status=\"active\"\nlist_spaces with page=1 pageSize=20\n\n\nParameters:\n\npage (number, optional): Page number (default: 1)\npageSize (number, optional): Items per page (default: 10)\nstatus (string, optional): Filter by active, archived, or all\nmanage_space\n\nCreate, get, update, or delete a space.\n\nmanage_space with action=\"create\" name=\"Product Docs\" description=\"Technical documentation\"\nmanage_space with action=\"create\" name=\"Legal\" description=\"Case files\" icon=\"briefcase\"\nmanage_space with action=\"get\" id=\"space_abc123\"\nmanage_space with action=\"update\" id=\"space_abc123\" description=\"Updated description\"\nmanage_space with action=\"delete\" id=\"space_abc123\"\n\n\nParameters:\n\naction (string, required): create, get, update, or delete\nid (string): Space ID (required for get/update/delete)\nname (string): Space name (required for create)\ndescription (string, optional): Space description\nicon (string, optional): Icon name. Defaults to \"folder\"\nslug (string, optional): URL-friendly identifier\nisArchived (boolean, optional): Archive status (for update)\n\nValid Icons: folder, book, file-text, database, package, archive, briefcase, inbox, layers, box\n\nIf an invalid icon is provided, the tool returns an error with the list of valid options.\n\nDocument Management\nlist_documents\n\nList documents in a space.\n\nlist_documents with spaceId=\"space_abc123\"\nlist_documents with spaceId=\"space_abc123\" status=\"completed\"\nlist_documents with spaceId=\"space_abc123\" status=\"all\"\n\n\nParameters:\n\nspaceId (string, required): Space ID\npage (number, optional): Page number\npageSize (number, optional): Items per page (max: 100)\nstatus (string, optional): Filter by status. Values: pending, processing, completed, failed, or all. Omitting returns all documents.\n\nNote: Status values are case-insensitive (completed and COMPLETED both work).\n\nsave_document\n\nUpload or upsert documents (single or batch).\n\nSingle document:\n\nsave_document with spaceId=\"space_abc123\" filename=\"guide.md\" content=\"# Guide\\n\\nContent here...\"\n\n\nBatch upload:\n\nsave_document with spaceId=\"space_abc123\" documents=[{\"filename\": \"doc1.md\", \"content\": \"...\"}, {\"filename\": \"doc2.md\", \"content\": \"...\"}]\n\n\nParameters:\n\nspaceId (string, required): Space ID\nfilename (string): Filename (required for single)\ncontent (string): Content (required for single)\ndocuments (array, optional): Array of {filename, content, metadata} for batch\nmetadata (object, optional): Custom key-value pairs\nget_document\n\nGet document content by ID or filename. Returns processed markdown text.\n\nget_document with spaceId=\"space_abc123\" id=\"doc_xyz789\"\nget_document with spaceId=\"space_abc123\" filename=\"guide.md\"\nget_document with spaceId=\"*\" filename=\"guide.md\"\n\n\nParameters:\n\nspaceId (string, required): Space ID, or * to search all spaces (requires filename)\nid (string, optional): Document ID\nfilename (string, optional): Filename\n\nNotes:\n\nEither id or filename is required\nUse spaceId=\"*\" to search all spaces when you know the filename but not the space\nFor completed documents, returns the extracted markdown text (not raw PDF binary)\nWhen using *, the response includes the spaceId where the document was found\nupdate_document\n\nUpdate document content or metadata.\n\nupdate_document with spaceId=\"space_abc123\" id=\"doc_xyz789\" content=\"New content...\"\nupdate_document with spaceId=\"space_abc123\" id=\"doc_xyz789\" append=true content=\"Additional content\"\n\n\nParameters:\n\nspaceId (string, required): Space ID\nid (string, required): Document ID\ncontent (string, optional): New content\nmetadata (object, optional): New metadata\nappend (boolean, optional): Append instead of replace\nseparator (string, optional): Separator for append mode\ndelete_document\n\nPermanently delete a document.\n\ndelete_document with spaceId=\"space_abc123\" id=\"doc_xyz789\"\n\n\nParameters:\n\nspaceId (string, required): Space ID\nid (string, required): Document ID\nQuery Tools\nquery_spaces\n\nSearch documents across one or more spaces using tree-based reasoning.\n\nquery_spaces with query=\"How do I authenticate API requests?\"\nquery_spaces with query=\"installation guide\" spaceIds=\"space_abc123\"\nquery_spaces with query=\"error handling\" spaceIds=[\"space_abc\", \"space_def\"] topK=10\n\n\nParameters:\n\nquery (string, required): Natural language search query\nspaceIds (string or array, optional): Space ID(s) to search. Omit or use * for all spaces\ntopK (number, optional): Maximum results (default: 10)\ncompact (boolean, optional): Use compact format (default: false). See When to Use Compact below.\n\nWhen to Use Compact:\n\nMode\tWhen to use\tWhat you get\ncompact=false (default)\tMost queries. Any time you need actual data, facts, numbers, dates, or details from documents.\tFull results with document metadata, tree context, page ranges, and complete content.\ncompact=true\tBroad discovery queries where you only need to know which documents are relevant, not their content.\tMinimal results: just content snippet, source filename, and score.\n\nRule of thumb: Default to compact=false. Only use compact=true when you're browsing/surveying and don't need the actual content yet.\n\nResponse (compact=true format):\n\n{\n  \"results\": [\n    {\n      \"content\": \"Relevant text content...\",\n      \"source\": \"filename.pdf\",\n      \"score\": 0.95\n    }\n  ],\n  \"total\": 5\n}\n\nsmart_query\n\nDiscover which spaces are relevant for a query using LLM reasoning.\n\nsmart_query with query=\"How do I install the SDK?\"\nsmart_query with query=\"billing questions\" maxSpaces=3\n\n\nParameters:\n\nquery (string, required): Query to find relevant spaces for\nmaxSpaces (number, optional): Maximum spaces to return (default: 5)\n\nResponse:\n\n{\n  \"query\": \"How do I install the SDK?\",\n  \"relevantSpaces\": [\n    {\"spaceId\": \"space_abc123\", \"relevance\": \"Contains SDK installation guides\"},\n    {\"spaceId\": \"space_def456\", \"relevance\": \"Has developer tutorials\"}\n  ],\n  \"totalFound\": 2\n}\n\n\nUse case: When you don't know which space to search, use smart_query first to discover relevant spaces, then use query_spaces with those space IDs.\n\nTree Visibility Tools\n\nThese tools let you explore the hierarchical structure of indexed documents.\n\nget_document_tree\n\nGet the tree structure of a document showing sections, summaries, and page ranges.\n\nget_document_tree with spaceId=\"space_abc123\" documentId=\"doc_xyz789\"\n\n\nParameters:\n\nspaceId (string, required): Space ID\ndocumentId (string, required): Document ID\n\nResponse:\n\n{\n  \"documentId\": \"doc_xyz789\",\n  \"totalPages\": 45,\n  \"totalNodes\": 12,\n  \"nodes\": [\n    {\n      \"nodeId\": \"0001\",\n      \"title\": \"Introduction\",\n      \"summary\": \"Overview of the system architecture...\",\n      \"pages\": \"1-5\",\n      \"depth\": 0\n    },\n    {\n      \"nodeId\": \"0002\",\n      \"title\": \"Installation\",\n      \"summary\": \"Step-by-step installation guide...\",\n      \"pages\": \"6-12\",\n      \"depth\": 0\n    }\n  ]\n}\n\n\nUse case: Use this to understand a document's structure before drilling into specific sections.\n\nget_tree_node\n\nGet the full text content of a specific tree node/section.\n\nget_tree_node with documentId=\"doc_xyz789\" nodeId=\"0002\"\n\n\nParameters:\n\ndocumentId (string, required): Document ID\nnodeId (string, required): Node ID from the tree structure\n\nResponse:\n\n{\n  \"documentId\": \"doc_xyz789\",\n  \"filename\": \"manual.pdf\",\n  \"nodeId\": \"0002\",\n  \"title\": \"Installation\",\n  \"summary\": \"Step-by-step installation guide...\",\n  \"pages\": \"6-12\",\n  \"depth\": 0,\n  \"content\": \"## Installation\\n\\nTo install the software, follow these steps:\\n\\n1. Download the installer...\\n\\n...\"\n}\n\n\nUse case: After viewing the tree structure, use this to read the full content of a specific section.\n\nWorkflow Patterns\nPattern 1: Search for Information (Default Approach)\n\nFor most questions, a single query_spaces call is all you need. Start here before trying multi-step workflows.\n\nquery_spaces with query=\"your question\"\n\n\nThis searches all spaces with full details (compact=false by default). One call, done.\n\nIf you want to narrow to specific spaces:\n\nquery_spaces with query=\"your question\" spaceIds=\"known_space_id\"\n\n\nIf you truly don't know which spaces exist:\n\nsmart_query with query=\"your question\"\n# Then use the returned spaceIds:\nquery_spaces with query=\"your question\" spaceIds=[\"returned_space_id\"]\n\n\nAvoid over-searching. The multi-step workflow (smart_query -> query_spaces -> get_document_tree -> get_tree_node) is rarely necessary. For most questions, a single query_spaces call returns the answer directly. Only escalate to tree browsing if results are insufficient.\n\nPattern 2: Look Up Specific Data\n\nWhen looking for specific facts, numbers, dates, names, or details:\n\nJust query directly -- one call:\n\nquery_spaces with query=\"total amount on invoice #1234\"\n\n\nThe default compact=false returns full content with document metadata, so you get the actual data you need in one step. Do not use compact=true for data lookups -- it strips the detail you need.\n\nPattern 3: Browse a Large Document\n\nWhen you need to navigate a large document's structure:\n\nGet the document structure:\n\nget_document_tree with spaceId=\"space_id\" documentId=\"doc_id\"\n\n\nIdentify relevant sections from the node titles and summaries\n\nRead specific sections:\n\nget_tree_node with documentId=\"doc_id\" nodeId=\"relevant_node_id\"\n\nPattern 4: Add New Content\n\nWhen adding documents to a knowledge base:\n\nFind or create the appropriate space:\n\nlist_spaces\n# or\nmanage_space with action=\"create\" name=\"New Space\" description=\"...\"\n\n\nUpload the content:\n\nsave_document with spaceId=\"space_id\" filename=\"document.md\" content=\"...\"\n\n\nWait for processing (status will change from PENDING -> PROCESSING -> COMPLETED)\n\nVerify it's ready:\n\nlist_documents with spaceId=\"space_id\" status=\"COMPLETED\"\n\nmanage_space - Valid Icons\n\nWhen creating or updating a space, use one of these icon values:\n\nfolder (default)\nbook\nfile-text\ndatabase\npackage\narchive\nbriefcase\ninbox\nlayers\nbox\n\nInvalid icons will return a helpful error message with the list of valid options.\n\nlist_documents - Status Parameter\n\nThe status parameter accepts the following values (case-insensitive):\n\n\"all\" - Returns documents in any status (COMPLETED, FAILED, PENDING, PROCESSING)\n\"completed\" - Returns only successfully processed documents\n\"failed\" - Returns only documents that failed processing (includes errorMessage field)\n\"pending\" - Returns documents waiting to be processed\n\"processing\" - Returns documents currently being processed\n\nDocuments with status=\"FAILED\" will include an errorMessage field explaining what went wrong during processing.\n\nsave_document - Processing Workflow\n\nDocuments are processed asynchronously:\n\nsave_document returns immediately with status=\"PROCESSING\"\nBackground job generates embeddings and indexes the document (typically 1-3 seconds)\nStatus changes to \"COMPLETED\" when ready\nDocument becomes searchable via query_spaces\n\nTo check completion status:\n\nUse get_document to check a specific document's status\nUse list_documents with status=\"processing\" to see all processing documents\nUse list_documents with status=\"failed\" to see any failures\n\nExample:\n\n// Save document\nconst result = await save_document({...});\n// result.document.status === \"PROCESSING\"\n\n// Check status after a moment\nconst doc = await get_document({id: result.document.id});\n// doc.status === \"COMPLETED\" (when ready)\n\nget_tree_node - Content Availability\n\nget_tree_node may return \"(No text content cached for this node)\" for certain nodes. This occurs for:\n\nStructural/organizational nodes without associated text content\nNodes that serve as section headers in the tree hierarchy\n\nThis is expected behavior.\n\nTo read actual document content:\n\nUse get_document to retrieve the full processed markdown\nUse query_spaces to search and retrieve relevant content chunks\n\nThe tree structure (via get_document_tree) is always available and shows document organization, summaries, and page ranges.\n\nBest Practices\nDO\nStart with a single query_spaces call - it usually has the answer in one step\nUse compact=false (the default) for most queries - you get full content and context\nCheck document status before querying - only COMPLETED documents are searchable\nUse descriptive queries - natural language works best\nUse tree tools for large documents - navigate structure instead of reading everything\nWrite good space descriptions - they're used by smart_query for discovery\nDON'T\nDon't over-search - avoid multi-step workflows (smart_query -> query_spaces -> get_document_tree -> get_tree_node) when a single query_spaces call suffices\nDon't use compact=true for data lookups - it strips the content you need; only use it for broad discovery\nDon't query PENDING/PROCESSING documents - they won't return results\nDon't use very short queries - more context = better results\nDon't forget to check processing status after uploading new documents\nError Handling\n\nCommon errors and solutions:\n\nError\tCause\tSolution\n\"Document not found\"\tWrong ID or no access\tVerify the document ID with list_documents\n\"Space not found\"\tWrong ID or archived\tUse list_spaces to find valid space IDs\nEmpty search results\tDocument not COMPLETED or no matches\tCheck document status; try broader query\n\"Tree not found\"\tDocument uses vector indexing or not processed\tCheck if document status is COMPLETED\n\"Invalid icon\"\tIcon name not in allowed list\tUse one of: folder, book, file-text, database, package, archive, briefcase, inbox, layers, box\n\"No text content cached\"\tTree node content not cached\tThis is normal for structural nodes; use get_document for full content\nTroubleshooting Tips\n\nIf save_document fails:\n\nVerify the space exists with manage_space with action=\"get\" id=\"...\"\nEnsure content is valid text/markdown\nCheck that the space is not archived\n\nIf list_documents returns 0 results:\n\nTry status=\"all\" or omit the status parameter entirely\nVerify the spaceId is correct with list_spaces\nCheck if documents are still processing (status=\"processing\")\n\nIf get_tree_node returns no content:\n\nSome nodes are structural and don't have cached text content\nUse get_document to get the full processed document text instead\nOr use query_spaces to search for specific content\nQuick Reference\nTask\tTool\tExample\nList all spaces\tlist_spaces\tlist_spaces with status=\"active\"\nCreate a space\tmanage_space\tmanage_space with action=\"create\" name=\"Docs\"\nList documents\tlist_documents\tlist_documents with spaceId=\"...\"\nUpload content\tsave_document\tsave_document with spaceId=\"...\" content=\"...\"\nGet document text\tget_document\tget_document with spaceId=\"...\" id=\"...\"\nSearch content\tquery_spaces\tquery_spaces with query=\"...\"\nFind relevant spaces\tsmart_query\tsmart_query with query=\"...\"\nView doc structure\tget_document_tree\tget_document_tree with spaceId=\"...\" documentId=\"...\"\nRead a section\tget_tree_node\tget_tree_node with documentId=\"...\" nodeId=\"...\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ehudsn/orchata",
    "publisherUrl": "https://clawhub.ai/ehudsn/orchata",
    "owner": "ehudsn",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/orchata",
    "downloadUrl": "https://openagent3.xyz/downloads/orchata",
    "agentUrl": "https://openagent3.xyz/skills/orchata/agent",
    "manifestUrl": "https://openagent3.xyz/skills/orchata/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/orchata/agent.md"
  }
}