Skip to content

MCP Tools

The OpenTusk MCP server exposes 34 tools that AI agents can call directly via the Model Context Protocol.

CategoryCountTools
Account3account_info, account_link_sui, account_unlink_sui
Vaults6vault_create, vault_list, vault_get, vault_update, vault_delete, vault_tree
Shared vaults4vault_grant_access, vault_revoke_access, vault_list_members, vault_list_shared
Files10file_upload, file_create, file_read, file_read_batch, file_download, file_list, file_get, file_get_chunks, file_delete, file_retry
Folders5folder_create, folder_list, folder_get_contents, folder_update, folder_delete
Trash4trash_list, trash_restore, trash_delete, trash_empty
Search2search, index_sync (only when @opentusk/indexer is reachable)
Agent (Claude Code / Desktop / Cursor)
↕ stdin/stdout (JSON-RPC)
MCP Server (opentusk mcp serve)
↕ @opentusk/sdk
OpenTusk API (api.opentusk.ai)
Hot Cache (S3) ←→ Walrus Network
←→ Sui Blockchain (SEAL allowlists)

The MCP server runs as a subprocess of the agent, communicating over stdin/stdout using JSON-RPC. All human-readable output goes to stderr — stdout is reserved for the MCP protocol.

Terminal window
npm install -g @opentusk/cli
opentusk login --api-key otk_your_key
opentusk mcp install-config --target claude-code # or claude-desktop, cursor

See the quickstart for your agent: Claude Code, Claude Desktop, Cursor.

{
"mcpServers": {
"opentusk": {
"command": "opentusk",
"args": ["mcp", "serve"],
"env": {
"OPENTUSK_API_KEY": "otk_your_key",
"OPENTUSK_SUI_PRIVATE_KEY": "suiprivkey1..."
}
}
}
}
VariableRequiredPurpose
OPENTUSK_API_KEYYesAPI key for authentication
OPENTUSK_SUI_PRIVATE_KEYNoSui Ed25519 private key for SEAL encryption on shared vaults
AgentTargetConfig file
Claude Codeclaude-code.mcp.json in project root
Claude Desktopclaude-desktop~/Library/Application Support/Claude/claude_desktop_config.json
Cursorcursor~/.cursor/mcp.json

The MCP server handles SEAL encryption transparently for shared vaults. When uploading, files are encrypted using SEAL IBE tied to the vault’s on-chain Whitelist. When downloading, the server signs a SessionKey with the Sui keypair to prove membership.

If OPENTUSK_SUI_PRIVATE_KEY is not set, shared vault operations return a clear error. Public vaults work without it.

Get account info — email, plan, storage usage, encryption status.

Parameters: None


Link a Sui wallet address to the account. Required for shared vault access.

ParameterTypeRequiredDescription
suiAddressstringYesSui wallet address (0x + 64 hex chars)

Unlink the Sui wallet address from the account.

Parameters: None


Create a vault.

ParameterTypeRequiredDefaultDescription
namestringYesVault name
descriptionstringNoVault description
visibilitystringNo"shared""public" or "shared"

List the account’s vaults. Returns a lean summary by default: id, name, visibility, fileCount, totalSizeBytes, and (when the local indexer is running) lastFileActivityAt.

ParameterTypeRequiredDefaultDescription
verbosebooleanNofalseInclude SEAL on-chain crypto metadata (sealAllowlistObjectId, sealCapObjectId, sealPackageId, sealKeyServerIds, sealThreshold). Only useful for wallet-side SEAL operations.

Get vault details by ID.

ParameterTypeRequiredDescription
vaultIdstringYesVault ID

Update vault name or description.

ParameterTypeRequiredDescription
vaultIdstringYesVault ID
namestringNoNew vault name
descriptionstringNoNew description

Delete a vault.

ParameterTypeRequiredDefaultDescription
vaultIdstringYesVault ID
forcebooleanNofalseDelete even if vault has files (moves files to trash first)

Enumerate every folder and file in a vault as a flat tree with paths and decrypted filenames. Prefer this over folder_list + file_list when browsing a vault — one call instead of N. Uses the local search index when available (fastest path); falls back to walking the API and decrypting SEAL filenames client-side.

ParameterTypeRequiredDefaultDescription
vaultIdstringYesVault ID to enumerate
includeFilesbooleanNotrueSet false for a folder-only listing
maxDepthnumberNo10Max folder depth to descend (0–20). Only honored on the SDK fallback path.

Returns { folders: [{ id, path, name, fileCount }], files: [{ id, name, path, mimeType, sizeBytes, modifiedAt }] }.


Upload a file from a local disk path. Encrypts automatically for shared vaults.

ParameterTypeRequiredDescription
filePathstringYesLocal file path
vaultIdstringYesTarget vault ID
folderIdstringNoTarget folder ID

Best for agents with filesystem access (Claude Code, Cursor).


Create a file from raw text or base64 content. Encrypts automatically for shared vaults.

ParameterTypeRequiredDefaultDescription
namestringYesFile name
contentstringYesFile content (text or base64)
encodingstringNo"utf-8""utf-8" or "base64"
vaultIdstringYesTarget vault ID
folderIdstringNoTarget folder ID

Best for sandboxed agents without filesystem access (Claude Desktop).


Download a file to a local disk path. Decrypts automatically for shared vaults.

ParameterTypeRequiredDescription
fileIdstringYesFile ID
outputPathstringYesLocal output path

Read file content inline. Returns text for text files, base64 for binary. Handles SEAL decryption + cold-file rehydration transparently.

ParameterTypeRequiredDescription
fileIdstringYesFile ID

Best for inspecting a single file’s content. For multiple files in one call, use opentusk_file_read_batch.


Read up to 50 files in one call with bounded concurrency. Per-file failures don’t fail the batch — failed entries carry an error field instead of content. Use this when you need to summarize, diff, or process a known set of files.

ParameterTypeRequiredDefaultDescription
fileIdsstring[]YesFile IDs to read (1–50)
concurrencynumberNo5Max simultaneous file fetches (1–10)

Return a contiguous range of chunks from an indexed file. Faster than file_read for fully-text-indexed files because chunks come straight from the local index — no SEAL hop, no network. Use it to widen context around a search hit (e.g. fetch chunks [n-1, n+2] for surrounding paragraphs).

ParameterTypeRequiredDefaultDescription
fileIdstringYesFile ID
startChunknumberNo0First chunk index (inclusive)
endChunknumberNovery largeLast chunk index (inclusive)

Only useful when the file has been indexed by @opentusk/indexer.


List files, optionally filtered by vault or folder.

ParameterTypeRequiredDescription
vaultIdstringNoFilter by vault
folderIdstringNoFilter by folder
limitnumberNoMax results
cursorstringNoPagination cursor

Get file metadata by ID.

ParameterTypeRequiredDescription
fileIdstringYesFile ID

Soft-delete a file (moves to trash, restorable for 7 days).

ParameterTypeRequiredDescription
fileIdstringYesFile ID

Retry Walrus sync for a failed file, or retry all failed files.

ParameterTypeRequiredDescription
fileIdstringNoFile ID (omit to retry all failed files)

Create a folder in a vault.

ParameterTypeRequiredDescription
vaultIdstringYesVault ID
namestringYesFolder name
parentIdstringNoParent folder ID (for nesting)

List folders in a vault.

ParameterTypeRequiredDescription
vaultIdstringYesVault ID
parentIdstringNoList children of a specific parent

Get files and subfolders in a folder.

ParameterTypeRequiredDescription
folderIdstringYesFolder ID

Rename a folder.

ParameterTypeRequiredDescription
folderIdstringYesFolder ID
namestringYesNew folder name

Delete a folder.

ParameterTypeRequiredDescription
folderIdstringYesFolder ID

List all trashed items.

Parameters: None


Restore a file or vault from trash.

ParameterTypeRequiredDescription
idstringYesTrashed item ID

Permanently delete a single item from trash. Irreversible.

ParameterTypeRequiredDescription
idstringYesTrashed item ID

Permanently delete all trash. Irreversible.

Parameters: None


Grant a user or agent access to a shared vault by Sui address.

ParameterTypeRequiredDescription
vaultIdstringYesVault ID
suiAddressstringYesMember’s Sui address

Revoke a member’s access from a shared vault.

ParameterTypeRequiredDescription
vaultIdstringYesVault ID
memberIdstringYesMember ID (from opentusk_vault_list_members)

List all members of a shared vault.

ParameterTypeRequiredDescription
vaultIdstringYesVault ID

List shared vaults the user is a member of (not owner).

Parameters: None


Search tools are only registered when @opentusk/indexer is installed and reachable (either spawned over stdio or via OPENTUSK_INDEXER_URL). If the indexer isn’t available, these tools are silently omitted — no error. See the Semantic Search guide for setup.

Run a semantic query across indexed files. Combines vector-space semantic ranking with filename-pattern matching — pass an empty query with namePattern for pure SQL LIKE filename search (no embedding, fastest path).

ParameterTypeRequiredDefaultDescription
querystringYesNatural-language query. Pass an empty string for pure filename-pattern search.
vaultIdstringNoFilter by vault
folderPathstringNoFolder path prefix (recursive)
mimeTypestringNoMIME type filter (e.g. "text/markdown")
namePatternstringNoShell-style glob matched against filename, case-insensitive. e.g. "2026-05-*.md", "*.pdf".
nameRegexstringNoRegex matched against filename, case-insensitive. Combined with namePattern (both must match).
limitnumberNo10Max results (1–50)
minScorenumberNo0.3Similarity threshold 0–1. Ignored when query is empty.

Returns a ranked array with filename, vault, folder, score, and matching chunks.


Sync vault files into the local index so search results are up to date. Incremental by default — only walks files whose content hash has changed.

ParameterTypeRequiredDefaultDescription
vaultIdstringNoSync a specific vault only (omit to sync all)
fullbooleanNofalseRe-walk every file even if already indexed
includeBinarybooleanNofalseDownload bodies even for files classified as non-indexable
sniffLimitBytesnumberNo1048576Size cap (bytes) for octet-stream / unknown-MIME files. Above this they become metadata-only.
SymptomFix
”SEAL encryption not available”Set OPENTUSK_SUI_PRIVATE_KEY in the MCP config’s env block
”Invalid API key”Create a new key at app.opentusk.ai or via opentusk account api-keys create
”Command not found”Re-run opentusk mcp install-config to regenerate with absolute paths
File stuck in “rehydrating”Cold files need to be fetched from Walrus — polls automatically for up to 60 seconds
Agent can’t write filesSandboxed agents: use opentusk_file_create / opentusk_file_read instead of upload/download
”Shared vaults not enabled”Link your Sui address: opentusk account link-sui <address>