# AIquila — Nextcloud MCP Server (npm · aiquila-mcp)

Nextcloud MCP server — files, calendar, contacts, mail, maps, notes, tasks & 120+ more tools

- Trust score: 75/100 (medium)
- Change this week: +35
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `{hostname}`: 0/100, [markdown](https://verifymcp.io/servers/elgorro-aiquila-mcp/https-hostname-mcp.md), [page](https://verifymcp.io/servers/elgorro-aiquila-mcp/https-hostname-mcp)
- npm · `aiquila-mcp`: 75/100 (this document), [markdown](https://verifymcp.io/servers/elgorro-aiquila-mcp/aiquila-mcp.md), [page](https://verifymcp.io/servers/elgorro-aiquila-mcp/aiquila-mcp)
- oci · `ghcr.io/elgorro/aiquila-mcp:0.3.23`: 4/100, [markdown](https://verifymcp.io/servers/elgorro-aiquila-mcp/ghcr-io-elgorro-aiquila-mcp-0-3-23.md), [page](https://verifymcp.io/servers/elgorro-aiquila-mcp/ghcr-io-elgorro-aiquila-mcp-0-3-23)

## Channel facts

- Registry: `npm`
- Package: `aiquila-mcp`
- Version: `0.3.23`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (143 of 147), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (143 of 147), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 71/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Cryptographically verified build provenance (signed, bound to elgorro/aiquila).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 2 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 19161 tokens (~64/item across 296 items; 296 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add elgorro-aiquila-mcp -- npx -y aiquila-mcp
```

### Codex

```bash
codex mcp add elgorro-aiquila-mcp -- npx -y aiquila-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "elgorro-aiquila-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "aiquila-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add elgorro-aiquila-mcp --command npx --arg -y --arg aiquila-mcp
```

### Hermes

```yaml
mcp_servers:
  elgorro-aiquila-mcp:
    command: "npx"
    args: ["-y", "aiquila-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "elgorro-aiquila-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "aiquila-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 75, +26)

- [security improvement] CVE-2026-14257 no longer affects this package
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security] The attested source repository moved: elgorro/aiquila
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-08-02 (score 49, +49)

- [security improvement] Malware scan: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass

### 2026-08-01 (score 0, −30)

- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified

### 2026-07-31 (score 30, +30)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 0, −83)

- [security regression] Known CVEs: fail → unverified
- [security regression] Provenance: pass → unverified
- [security regression] Malware scan: pass → unverified
- [security regression] Install scripts: pass → unverified
- [security improvement] CVE-2026-14257 no longer affects this package
- [security] The attested source repository moved: elgorro/aiquila
- [functional regression] Security disclosure: fail → unverified
- [functional regression] License: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: partial → unverified
- [functional regression] Maintenance: pass → unverified
- [functional] Licence: MIT

### 2026-07-29 (score 83, +64)

- [security regression] CVE-2026-14257 affects this package: high
- [security regression] Known CVEs: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security] The attested source repository moved: elgorro/aiquila
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Maintenance: unverified → pass
- [functional] Licence: MIT

### 2026-07-28 (score 19, −21)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 40)

First indexed and scored.

## MCP tools (296)

### `list_files` (~34 tokens)

List files and folders in a Nextcloud directory

Input parameters:

- `path` (string): The directory path to list (default: '/')

### `read_file` (~31 tokens)

Read the contents of a file from Nextcloud

Input parameters:

- `path` (string, required): The file path in Nextcloud

### `write_file` (~61 tokens)

Create or update a file in Nextcloud. File size is limited (default 1 GB, configurable via MCP_MAX_FILE_SIZE).

Input parameters:

- `content` (string, required): The content to write to the file
- `path` (string, required): The file path in Nextcloud

### `create_folder` (~30 tokens)

Create a folder in Nextcloud

Input parameters:

- `path` (string, required): The folder path to create in Nextcloud

### `delete` (~36 tokens)

Delete a file or folder from Nextcloud

Input parameters:

- `path` (string, required): The path in Nextcloud (e.g., '/Documents/file.txt')

### `move_file` (~61 tokens)

Move or rename a file or folder in Nextcloud

Input parameters:

- `destination` (string, required): The destination path
- `overwrite` (boolean): Whether to overwrite if the destination already exists
- `source` (string, required): The source path of the file or folder to move

### `copy_file` (~62 tokens)

Copy a file or folder in Nextcloud

Input parameters:

- `destination` (string, required): The destination path for the copy
- `overwrite` (boolean): Whether to overwrite if the destination already exists
- `source` (string, required): The source path of the file or folder to copy

### `get_file_info` (~54 tokens)

Get detailed file metadata from Nextcloud (name, size, mime type, modified date, permissions, etc.)

Input parameters:

- `path` (string, required): The file or folder path in Nextcloud (e.g., '/Documents/report.pdf')

### `search_files` (~69 tokens)

Search for files in Nextcloud by name pattern and/or mime type

Input parameters:

- `mime` (string): Filter by mime type prefix (e.g., 'image/', 'text/plain')
- `path` (string): Base directory to search in
- `query` (string, required): Search query (file name pattern)

### `get_file_content` (~62 tokens)

Read file content from Nextcloud with mime type info. Returns text for text files, base64 for binary files (images, PDFs, etc.). Images are returned as MCP image content for Claude vision.

Input parameters:

- `path` (string, required): The file path in Nextcloud

### `analyze_image` (~147 tokens)

Analyze one or more images stored in Nextcloud using Claude vision. Ask questions about image content, extract text (OCR), describe visuals, compare images, or analyse documents. Supports up to 20 images for multi-image comparison.

Input parameters:

- `path` (string): Single image file path in Nextcloud (e.g., '/Photos/receipt.jpg'). Use 'paths' for multiple images.
- `paths` (array): Multiple image file paths for comparison (max 20). E.g., ['/Photos/before.jpg', '/Photos/after.jpg']
- `prompt` (string, required): What to ask about the image(s) (e.g., "What text is in this image?", "Compare these images")

### `bulk_file_operations` (~47 tokens)

Execute multiple file operations (move, copy, delete) sequentially in a single call. Returns per-item results.

Input parameters:

- `operations` (array, required): Array of file operations to execute sequentially

### `create_archive` (~100 tokens)

Create a zip archive in Nextcloud from one or more files and/or folders. Runs server-side; not bound by MCP file-size limits.

Input parameters:

- `destination` (string, required): Path for the resulting .zip file (e.g., '/Documents/backup.zip')
- `overwrite` (boolean): Whether to overwrite the destination if it already exists
- `sources` (array, required): Paths of files/folders to include (e.g., ['/Documents/a.txt', '/Photos'])

### `extract_archive` (~79 tokens)

Extract a zip archive in Nextcloud into a destination folder. Runs server-side.

Input parameters:

- `archive` (string, required): Path to the .zip file (e.g., '/Documents/backup.zip')
- `destination` (string, required): Folder to extract into (e.g., '/Documents/restored')
- `overwrite` (boolean): Whether to overwrite entries that already exist

### `list_archive` (~44 tokens)

List the contents of a zip archive in Nextcloud without extracting it.

Input parameters:

- `archive` (string, required): Path to the .zip file (e.g., '/Documents/backup.zip')

### `system_status` (~22 tokens)

Get Nextcloud system status including version, installation path, and configuration

### `run_setup_checks` (~32 tokens)

Run Nextcloud setup checks to verify system configuration (security, performance, PHP modules, etc.). Requires admin privileges

### `get_local_time` (~45 tokens)

Get the current local time and timezone of the MCP server. Call this to establish a time reference before creating or listing calendar events, or to resolve scheduling ambiguities with the user.

### `list_apps` (~51 tokens)

List all installed Nextcloud apps with their enabled/disabled status. Requires admin privileges

Input parameters:

- `filter` (string): Filter apps by status: "all", "enabled", or "disabled" (default: all)

### `get_app_info` (~46 tokens)

Get detailed information about a specific Nextcloud app. Requires admin privileges

Input parameters:

- `appId` (string, required): The app ID (e.g., "tasks", "deck", "photos")

### `enable_app` (~44 tokens)

Enable a disabled Nextcloud app. Requires admin privileges

Input parameters:

- `appId` (string, required): The app ID to enable (e.g., "tasks", "deck", "photos")

### `disable_app` (~51 tokens)

Disable an enabled Nextcloud app (preserves data but removes functionality). Requires admin privileges

Input parameters:

- `appId` (string, required): The app ID to disable (e.g., "tasks", "deck", "photos")

### `install_app` (~61 tokens)

Install a Nextcloud app from the App Store via occ app:install

Input parameters:

- `appId` (string, required): App ID to install (e.g. "tasks", "calendar", "mail")
- `keepDisabled` (boolean): Install but keep the app disabled

### `uninstall_app` (~50 tokens)

Remove a Nextcloud app via occ app:remove

Input parameters:

- `appId` (string, required): App ID to remove (e.g. "tasks")
- `keepData` (boolean): Keep app data after removal

### `get_file_tags` (~46 tokens)

Get the personal tags assigned to a file or folder in Nextcloud

Input parameters:

- `path` (string, required): The file or folder path in Nextcloud (e.g., '/Photos/test.png')

### `set_file_tags` (~83 tokens)

Set personal tags on a file or folder in Nextcloud. Replaces all existing personal tags. Use an empty array to clear all tags.

Input parameters:

- `path` (string, required): The file or folder path in Nextcloud (e.g., '/Photos/test.png')
- `tags` (array, required): Array of tag names to set (e.g., ['Wallpapers', 'Nature'])

### `list_system_tags` (~38 tokens)

List all available system tags in Nextcloud with their IDs, names, and properties. Use this to find tag IDs before assigning them to files.

### `create_system_tag` (~75 tokens)

Create a new system tag in Nextcloud. Returns the created tag info.

Input parameters:

- `name` (string, required): The name for the new system tag
- `userAssignable` (boolean): Whether users can assign this tag (default: true)
- `userVisible` (boolean): Whether the tag is visible to users (default: true)

### `assign_system_tag` (~60 tokens)

Assign a system tag to a file by file ID and tag ID. Use get_file_info to obtain the file ID.

Input parameters:

- `fileId` (number, required): The Nextcloud file ID
- `tagId` (number, required): The system tag ID to assign

### `remove_system_tag` (~50 tokens)

Remove a system tag from a file by file ID and tag ID

Input parameters:

- `fileId` (number, required): The Nextcloud file ID
- `tagId` (number, required): The system tag ID to remove

### `unified_search` (~124 tokens)

Search across all Nextcloud apps (files, calendar, contacts, mail, notes, etc.) using Unified Search. Optionally filter by a specific provider ID. Without a provider, searches the top providers in parallel.

Input parameters:

- `cursor` (string): Pagination cursor returned from a previous search
- `limit` (number): Maximum results per provider (default: 5)
- `provider` (string): Search a specific provider by ID (e.g. "files", "calendar", "contacts"). Omit to search across all providers.
- `query` (string, required): The search query

### `list_search_providers` (~33 tokens)

List all available Unified Search providers in Nextcloud. Use this to discover provider IDs for targeted searches with unified_search.

### `list_users` (~60 tokens)

List all users in the Nextcloud instance. Requires admin or sub-admin privileges

Input parameters:

- `limit` (number): Maximum number of users to return
- `offset` (number): Offset for pagination
- `search` (string): Search/filter string for user IDs

### `get_user_info` (~49 tokens)

Get detailed information about a specific Nextcloud user. Non-admin users can only query their own user ID

Input parameters:

- `userId` (string, required): The user ID (login name) to get information about

### `enable_user` (~37 tokens)

Enable a disabled Nextcloud user account. Requires admin privileges

Input parameters:

- `userId` (string, required): The user ID (login name) to enable

### `disable_user` (~43 tokens)

Disable a Nextcloud user account (prevents login but preserves data). Requires admin privileges

Input parameters:

- `userId` (string, required): The user ID (login name) to disable

### `list_groups` (~60 tokens)

List all groups in the Nextcloud instance. Requires admin or sub-admin privileges

Input parameters:

- `limit` (number): Maximum number of groups to return
- `offset` (number): Offset for pagination
- `search` (string): Search/filter string for group names

### `get_group_info` (~44 tokens)

Get detailed information about a specific Nextcloud group. Requires admin or sub-admin privileges

Input parameters:

- `groupId` (string, required): The group ID (name) to get information about

### `add_user_to_group` (~62 tokens)

Add a Nextcloud user to a group. Requires admin privileges

Input parameters:

- `groupId` (string, required): The group ID (name) to add the user to
- `userId` (string, required): The user ID (login name) to add to the group

### `remove_user_from_group` (~62 tokens)

Remove a Nextcloud user from a group. Requires admin privileges

Input parameters:

- `groupId` (string, required): The group ID (name) to remove the user from
- `userId` (string, required): The user ID (login name) to remove from the group

### `list_shares` (~72 tokens)

List file shares in Nextcloud (for diagnostics and security auditing)

Input parameters:

- `path` (string): Filter shares for a specific file/folder path
- `reshares` (boolean): Include reshares (default: false)
- `subfiles` (boolean): Show shares for all files in a folder (requires path)

### `create_share` (~189 tokens)

Create a file or folder share in Nextcloud

Input parameters:

- `expireDate` (string): Expiration date (YYYY-MM-DD)
- `hideDownload` (boolean): Hide download button for public link shares
- `label` (string): Label for public link shares
- `note` (string): Note to the share recipient
- `password` (string): Password-protect the share
- `path` (string, required): File or folder path to share
- `permissions` (number): Permission bitmask: 1=read, 2=update, 4=create, 8=delete, 16=share
- `shareType` (number, required): Share type: 0=user, 1=group, 3=public link, 4=email, 6=federated
- `shareWith` (string): Recipient (required for user/group/email/federated; omit for public link)

### `update_share` (~129 tokens)

Update an existing share in Nextcloud

Input parameters:

- `expireDate` (string): Expiration date (YYYY-MM-DD)
- `hideDownload` (boolean): Hide download button for public link shares
- `label` (string): Label for public link shares
- `note` (string): Note to the share recipient
- `password` (string): Password-protect the share
- `permissions` (number): Permission bitmask: 1=read, 2=update, 4=create, 8=delete, 16=share
- `shareId` (number, required): The share ID to update

### `delete_share` (~28 tokens)

Delete a share in Nextcloud

Input parameters:

- `shareId` (number, required): The share ID to delete

### `get_share` (~32 tokens)

Get detailed information about a specific share by its ID

Input parameters:

- `shareId` (number, required): The share ID to retrieve

### `list_shares_with_me` (~22 tokens)

List all files and folders shared with the current user

### `search_sharees` (~115 tokens)

Search for valid share recipients (users, groups, emails, federated users, circles, rooms)

Input parameters:

- `itemType` (string): Item type (default: file)
- `search` (string, required): Search query for recipient name/email
- `shareTypes` (array): Share types to include: 0=user, 1=group, 3=public, 4=email, 6=federated, 7=circle, 10=room (default: [0,1,3,4,6])

### `list_pending_shares` (~24 tokens)

List pending federated/remote shares waiting to be accepted or declined

### `accept_pending_share` (~32 tokens)

Accept a pending federated/remote share

Input parameters:

- `shareId` (number, required): The pending share ID to accept

### `decline_pending_share` (~33 tokens)

Decline a pending federated/remote share

Input parameters:

- `shareId` (number, required): The pending share ID to decline

### `get_out_of_office` (~47 tokens)

Get a user's current out-of-office / absence status (NC 28+)

Input parameters:

- `userId` (string): User ID to check (defaults to the configured Nextcloud user)

### `set_out_of_office` (~134 tokens)

Set an out-of-office / absence period with status message (NC 28+)

Input parameters:

- `firstDay` (string, required): First day of absence (YYYY-MM-DD)
- `lastDay` (string, required): Last day of absence (YYYY-MM-DD)
- `message` (string, required): Detailed absence message shown to others
- `replacementUserId` (string): User ID of the replacement/delegate during absence
- `status` (string, required): Short status label (e.g. "Vacation", "Sick leave")
- `userId` (string): User ID to set absence for (defaults to the configured Nextcloud user)

### `clear_out_of_office` (~48 tokens)

Clear a user's out-of-office / absence status (NC 28+)

Input parameters:

- `userId` (string): User ID to clear absence for (defaults to the configured Nextcloud user)

### `list_trash` (~18 tokens)

List files in the trash / recycle bin

### `restore_from_trash` (~51 tokens)

Restore a file from the trash to its original location (use the Key from list_trash)

Input parameters:

- `trashKey` (string, required): The trash item key (from the Key field in list_trash output)

### `empty_trash` (~22 tokens)

Permanently delete all files in the trash (cannot be undone)

### `list_file_versions` (~45 tokens)

List previous versions of a file (use get_file_info to find the fileId)

Input parameters:

- `fileId` (number, required): The Nextcloud internal file ID (from get_file_info)

### `restore_file_version` (~58 tokens)

Restore a previous version of a file (creates a new current version from the old one)

Input parameters:

- `fileId` (number, required): The Nextcloud internal file ID
- `versionId` (string, required): The version identifier (from list_file_versions output)

### `aiquila_show_config` (~16 tokens)

Show current AIquila configuration

### `aiquila_configure` (~112 tokens)

Configure AIquila settings (API key, model, tokens, timeout)

Input parameters:

- `apiKey` (string): Anthropic API key
- `maxTokens` (number): Maximum tokens for responses (default: 4096)
- `model` (string): Claude model to use (e.g., 'claude-fable-5', 'claude-opus-4-8', 'claude-sonnet-4-6')
- `timeout` (number): Request timeout in seconds (default: 60)

### `aiquila_test` (~34 tokens)

Test AIquila Claude API integration with a simple prompt

Input parameters:

- `prompt` (string): Test prompt to send to Claude API

### `check_core_integrity` (~25 tokens)

Verify Nextcloud core system integrity by checking file signatures against the official release

### `check_app_integrity` (~52 tokens)

Verify integrity of a specific Nextcloud app by checking file signatures against its official release

Input parameters:

- `appId` (string, required): The app ID to check (e.g., "tasks", "deck", "photos")

### `run_occ` (~215 tokens)

Execute an allowlisted Nextcloud OCC command on the server and return the output. Only commands in the allowlist may be run (configurable via MCP_OCC_ALLOWLIST env var). Allowed by default: status, app:list, app:check-code, config:app:get, setupchecks, integrity:check-core, integrity:check-app, user:list, user:info, group:list, maintenance:mode, maintenance:mimetype:update-db, db:add-missing-indices, db:add-missing-columns, db:add-missing-primary-keys, files:scan, files:cleanup, trashbin:cleanup, update:check, notification:generate, theming:config.

Input parameters:

- `args` (array): Optional arguments for the command (e.g., ["--shipped=false", "--output=json"])
- `command` (string, required): The OCC command to execute (e.g., "app:list", "config:list", "setupchecks")
- `timeout` (number): Timeout in seconds (default: 120, max: 600)

### `list_projects` (~29 tokens)

List all AIquila projects for the current user. Projects bundle files/directories with an optional system prompt.

### `create_project` (~68 tokens)

Create a new AIquila project. Projects bundle files/directories with an optional system prompt that gets injected into conversations.

Input parameters:

- `description` (string): Project description
- `systemPrompt` (string): System prompt to inject into conversations using this project
- `title` (string, required): Project title (required)

### `get_project` (~31 tokens)

Get details of an AIquila project including its file/directory paths.

Input parameters:

- `id` (number, required): Project ID

### `update_project` (~65 tokens)

Update an AIquila project. Only provided fields are updated.

Input parameters:

- `description` (string): New project description
- `id` (number, required): Project ID
- `systemPrompt` (string): New system prompt for conversations using this project
- `title` (string): New project title

### `delete_project` (~35 tokens)

Delete an AIquila project. Associated paths are removed and conversations referencing it are unlinked.

Input parameters:

- `id` (number, required): Project ID

### `add_project_path` (~61 tokens)

Add a file or directory path to an AIquila project.

Input parameters:

- `id` (number, required): Project ID
- `path` (string, required): File or directory path to add
- `pathType` (string): Type of path: "file" or "directory"

### `remove_project_path` (~42 tokens)

Remove a file or directory path from an AIquila project.

Input parameters:

- `id` (number, required): Project ID
- `pathId` (number, required): Path ID to remove

### `list_coworkers` (~33 tokens)

List the current user's coworkers (persistent scheduled AI tasks) with their status, provider, schedule and last run.

### `list_coworker_templates` (~39 tokens)

List built-in coworker templates (e.g. image classification via Claude vision or Mistral Pixtral) and available task types.

### `get_coworker` (~38 tokens)

Get a single coworker by ID, including its schedule and last run status.

Input parameters:

- `id` (number, required): Coworker ID

### `create_coworker` (~217 tokens)

Create a coworker. Provide templateId to start from a built-in template (e.g. "classify-images-claude" or "classify-images-pixtral"), and/or explicit fields to configure a custom one. Fields override template defaults.

Input parameters:

- `cronSchedule` (string): 5-field cron, e.g. "0 3 * * *"
- `inputPath` (string): Folder to process, e.g. "/Photos"
- `isActive` (boolean): Whether the coworker is enabled
- `maxTags` (number): Max tags per image (vision:classify)
- `model` (string): Provider id: "anthropic" (Claude) or "mistral" (Pixtral)
- `recursive` (boolean): Include sub-folders
- `taskType` (string): Task type id, e.g. "vision:classify"
- `templateId` (string): Built-in template id (see list_coworker_templates)
- `title` (string)

### `update_coworker` (~93 tokens)

Update a coworker's configuration (title, provider, input folder, schedule, options).

Input parameters:

- `cronSchedule` (string)
- `id` (number, required): Coworker ID
- `inputPath` (string)
- `maxTags` (number)
- `model` (string): "anthropic" or "mistral"
- `recursive` (boolean)
- `title` (string)

### `delete_coworker` (~31 tokens)

Delete a coworker and its run history.

Input parameters:

- `id` (number, required): Coworker ID

### `enable_coworker` (~33 tokens)

Enable a coworker so it runs on its schedule.

Input parameters:

- `id` (number, required): Coworker ID

### `disable_coworker` (~34 tokens)

Disable a coworker so it stops running on its schedule.

Input parameters:

- `id` (number, required): Coworker ID

### `pause_coworker` (~32 tokens)

Temporarily pause a coworker without disabling it.

Input parameters:

- `id` (number, required): Coworker ID

### `resume_coworker` (~28 tokens)

Resume a paused coworker.

Input parameters:

- `id` (number, required): Coworker ID

### `run_coworker` (~37 tokens)

Run a coworker immediately (synchronously) and return the run result.

Input parameters:

- `id` (number, required): Coworker ID

### `get_coworker_runs` (~54 tokens)

Get recent run history (progress, status, summary) for a coworker.

Input parameters:

- `id` (number, required): Coworker ID
- `limit` (number): Max runs to return (default 20)

### `list_calendars` (~34 tokens)

List all calendars available to the current user, including their supported component types (events, tasks, journals) and metadata.

### `list_events` (~173 tokens)

List events from a Nextcloud calendar within an optional time range. Returns event details including time, location, attendees, recurrence, and UIDs.

Input parameters:

- `calendarName` (string, required): The calendar name. Use list_calendars to find available calendar names.
- `from` (string): Start of time range (ISO 8601, e.g. 2026-04-12 or 2026-04-12T09:00:00Z). Defaults to today.
- `limit` (number): Maximum number of events to return (default: 50)
- `to` (string): End of time range (ISO 8601, e.g. 2026-04-12 or 2026-04-12T09:00:00Z). Defaults to 30 days from now.

### `get_event` (~64 tokens)

Get detailed information about a single calendar event by its UID, including full description, attendees, and recurrence rules.

Input parameters:

- `calendarName` (string, required): The calendar name. Use list_calendars to find available calendar names.
- `uid` (string, required): The UID of the event

### `create_event` (~421 tokens)

Create a new calendar event in Nextcloud with date/time, location, description, attendees, and optional recurrence.

Input parameters:

- `accessClass` (string): Event visibility classification
- `alarm` (number): Single reminder in minutes before the event (e.g. 15 for 15 min before). For multiple reminders use alarms[].
- `alarms` (array): Multiple reminders in minutes before the event (e.g. [1440, 60] for 1 day and 1 hour before). Combined with alarm if both are set.
- `attendees` (array): List of attendees
- `calendarName` (string, required): The calendar name. Use list_calendars to find available calendar names.
- `categories` (array): Tags/categories
- `description` (string): Event description
- `dtend` (string): End date/time. For all-day events, this is the exclusive end date (day after last day). If omitted, defaults to 1 hour after start (timed) or next day (all-day).
- `dtstart` (string, required): Start date/time in YYYYMMDD (all-day) or YYYYMMDDTHHmmssZ (timed) format
- `location` (string): Event location
- `rrule` (string): Recurrence rule (e.g. 'FREQ=WEEKLY;BYDAY=MO,WE,FR' or 'FREQ=MONTHLY;COUNT=12')
- `status` (string): Event status (default: CONFIRMED)
- `summary` (string, required): The event title
- `transp` (string): Time transparency for free/busy (OPAQUE = busy, TRANSPARENT = free)
- `tzid` (string): IANA time zone (e.g. "Europe/Berlin"). When set, a VTIMEZONE block is emitted and dtstart/dtend use TZID instead of UTC. Required for reliable iOS Calendar and Thunderbird CalDAV sync of timed events…

### `update_event` (~336 tokens)

Update an existing calendar event's fields by UID. Uses CalDAV ETag-based optimistic concurrency.

Input parameters:

- `accessClass` (string): New classification
- `alarm`: Single reminder in minutes before the event, or null to remove all existing alarms. For multiple reminders use alarms[].
- `alarms` (array): Multiple reminders in minutes before the event (e.g. [1440, 60]). Replaces existing alarms; combined with alarm if both are set.
- `attendees`: Replace attendees list, or null to remove all attendees
- `calendarName` (string, required): The calendar name. Use list_calendars to find available calendar names.
- `categories` (array): Replace all tags with these
- `description`: New description, or null to remove
- `dtend`: New end date/time, or null to remove
- `dtstart` (string): New start date/time (YYYYMMDD or YYYYMMDDTHHmmssZ)
- `location`: New location, or null to remove
- `rrule`: New recurrence rule, or null to remove
- `status` (string): New status
- `summary` (string): New event title
- `transp` (string): New transparency
- `tzid` (string): IANA time zone (e.g. "Europe/Berlin") for the updated dtstart/dtend. When set, a VTIMEZONE block is added (if missing) and DTSTART/DTEND use TZID instead of UTC. Required for iOS/Thunderbird CalDAV s…
- `uid` (string, required): The UID of the event to update

### `delete_event` (~59 tokens)

Delete a calendar event from Nextcloud by UID. This action is irreversible.

Input parameters:

- `calendarName` (string, required): The calendar name. Use list_calendars to find available calendar names.
- `uid` (string, required): The UID of the event to delete

### `list_task_lists` (~18 tokens)

List all task lists in Nextcloud Tasks

### `list_tasks` (~62 tokens)

List tasks from a Nextcloud Tasks calendar. Returns task details including status, priority, dates, tags, and UIDs.

Input parameters:

- `calendarName` (string): The calendar/task list name (default: 'tasks')
- `status` (string): Filter tasks by status

### `create_task` (~241 tokens)

Create a new task in Nextcloud Tasks with optional due date, start date, tags, location, and subtask relationships.

Input parameters:

- `calendarName` (string): The calendar name (default: 'tasks')
- `categories` (array): Tags/categories (e.g. ['work', 'urgent'])
- `classification` (string): Task visibility classification
- `description` (string): Detailed description of the task
- `dtstart` (string): Start date in YYYYMMDD or YYYYMMDDTHHmmssZ format
- `due` (string): Due date in YYYYMMDD or YYYYMMDDTHHmmssZ format (e.g. '20240315' or '20240315T140000Z')
- `location` (string): Location string
- `percentComplete` (number): Completion percentage (0-100)
- `priority` (number): Task priority (0=undefined, 1=highest, 5=medium, 9=lowest)
- `relatedTo` (string): Parent task UID (creates a subtask relationship)
- `summary` (string, required): The task summary/title
- `url` (string): Custom URL reference

### `update_task` (~225 tokens)

Update an existing task's fields by UID. Uses CalDAV ETag-based optimistic concurrency.

Input parameters:

- `calendarName` (string): The calendar name (default: 'tasks')
- `categories` (array): Replace all tags with these
- `classification` (string): New classification
- `description` (string): New description
- `dtstart`: New start date, or null to remove
- `due`: New due date (YYYYMMDD or YYYYMMDDTHHmmssZ), or null to remove
- `location`: New location, or null to remove
- `percentComplete` (number): New completion percentage
- `pinned` (boolean): Pin or unpin the task
- `priority` (number): New priority (0-9, 0 removes priority)
- `relatedTo`: New parent UID, or null to remove parent
- `status` (string): New status
- `summary` (string): New task title
- `uid` (string, required): The UID of the task to update
- `url`: New URL, or null to remove

### `delete_task` (~53 tokens)

Delete a task from Nextcloud Tasks by UID. This action is irreversible.

Input parameters:

- `calendarName` (string): The calendar name (default: 'tasks')
- `uid` (string, required): The UID of the task to delete

### `complete_task` (~80 tokens)

Mark a task as completed or reopen it. Sets STATUS, PERCENT-COMPLETE, and COMPLETED date atomically.

Input parameters:

- `calendarName` (string): The calendar name (default: 'tasks')
- `completed` (boolean): true = mark completed, false = reopen (default: true)
- `uid` (string, required): The UID of the task

### `list_address_books` (~26 tokens)

List all address books available to the current user, including their display names and metadata.

### `list_contacts` (~94 tokens)

List contacts from a Nextcloud address book. Optionally search by name. Returns name, email, phone, organization, and UID for each contact.

Input parameters:

- `addressBookName` (string): The address book name (default: 'contacts')
- `limit` (number): Maximum number of contacts to return (default: 50)
- `search` (string): Search term to filter contacts by name (case-insensitive contains match)

### `get_contact` (~70 tokens)

Get detailed information about a single contact by its UID, including all properties like name, email, phone, address, organization, birthday, notes, and groups.

Input parameters:

- `addressBookName` (string): The address book name (default: 'contacts')
- `uid` (string, required): The UID of the contact

### `create_contact` (~217 tokens)

Create a new contact in a Nextcloud address book with name, email, phone, address, organization, and other properties.

Input parameters:

- `addressBookName` (string): The address book name (default: 'contacts')
- `addresses` (array): Physical addresses
- `birthday` (string): Birthday in YYYY-MM-DD or YYYYMMDD format
- `categories` (array): Groups/categories for the contact
- `emails` (array): Email addresses
- `firstName` (string): First/given name
- `fullName` (string, required): The contact's full display name (required)
- `lastName` (string): Last/family name
- `note` (string): Notes about the contact
- `org` (string): Organization name
- `phones` (array): Phone numbers
- `prefix` (string): Name prefix (e.g. Dr., Mr.)
- `suffix` (string): Name suffix (e.g. Jr., III)
- `title` (string): Job title
- `url` (string): Website URL

### `update_contact` (~224 tokens)

Update an existing contact's fields by UID. Uses CardDAV ETag-based optimistic concurrency. Only provided fields are changed.

Input parameters:

- `addressBookName` (string): The address book name (default: 'contacts')
- `addresses` (array): Replace all addresses with these
- `birthday`: New birthday (YYYY-MM-DD or YYYYMMDD), or null to remove
- `categories` (array): Replace all groups/categories with these
- `emails` (array): Replace all emails with these
- `firstName`: New first name, or null to clear
- `fullName` (string): New full display name
- `lastName`: New last name, or null to clear
- `note`: New notes, or null to remove
- `org`: New organization, or null to remove
- `phones` (array): Replace all phone numbers with these
- `title`: New job title, or null to remove
- `uid` (string, required): The UID of the contact to update
- `url`: New website URL, or null to remove

### `delete_contact` (~57 tokens)

Delete a contact from a Nextcloud address book by UID. This action is irreversible.

Input parameters:

- `addressBookName` (string): The address book name (default: 'contacts')
- `uid` (string, required): The UID of the contact to delete

### `list_notes` (~54 tokens)

List all notes in Nextcloud Notes. Returns id, title, category, favorite flag, and modification date.

Input parameters:

- `category` (string): Filter by category
- `search` (string): Filter notes by title (client-side)

### `get_note` (~32 tokens)

Get the full content of a note by its ID.

Input parameters:

- `id` (integer, required): Note ID (from list_notes)

### `create_note` (~65 tokens)

Create a new note in Nextcloud Notes.

Input parameters:

- `category` (string): Category (maps to a subfolder)
- `content` (string, required): Content of the note (Markdown)
- `favorite` (boolean): Mark as favorite
- `title` (string, required): Title of the note

### `update_note` (~73 tokens)

Update an existing note. Provide only the fields you want to change.

Input parameters:

- `category` (string): New category
- `content` (string): New content (Markdown)
- `favorite` (boolean): Favorite flag
- `id` (integer, required): Note ID (from list_notes)
- `title` (string): New title

### `delete_note` (~28 tokens)

Delete a note by its ID.

Input parameters:

- `id` (integer, required): Note ID (from list_notes)

### `list_feeds` (~25 tokens)

List all RSS feeds subscribed in the Nextcloud News app, with unread counts.

### `add_feed` (~59 tokens)

Subscribe to a new RSS feed by URL, optionally placing it in a folder.

Input parameters:

- `folderId` (number): Folder ID to place the feed in (omit for root)
- `url` (string, required): The RSS/Atom feed URL to subscribe to

### `delete_feed` (~33 tokens)

Delete (unsubscribe from) a feed and all its items.

Input parameters:

- `feedId` (number, required): The feed ID to delete

### `move_feed` (~44 tokens)

Move a feed into a different folder.

Input parameters:

- `feedId` (number, required): The feed ID to move
- `folderId` (number, required): Destination folder ID (0 for root)

### `rename_feed` (~37 tokens)

Rename a feed.

Input parameters:

- `feedId` (number, required): The feed ID to rename
- `feedTitle` (string, required): The new feed title

### `mark_feed_read` (~59 tokens)

Mark all items in a feed as read up to (and including) the given newest item ID.

Input parameters:

- `feedId` (number, required): The feed ID
- `newestItemId` (number, required): Mark all items with ID <= this value as read

### `list_news_folders` (~24 tokens)

List all folders used to organize feeds in the Nextcloud News app.

### `create_news_folder` (~31 tokens)

Create a new folder for organizing feeds in the News app.

Input parameters:

- `name` (string, required): The folder name

### `rename_news_folder` (~38 tokens)

Rename a News folder.

Input parameters:

- `folderId` (number, required): The folder ID to rename
- `name` (string, required): The new folder name

### `delete_news_folder` (~32 tokens)

Delete a News folder and all feeds it contains.

Input parameters:

- `folderId` (number, required): The folder ID to delete

### `mark_news_folder_read` (~60 tokens)

Mark all items in a folder as read up to (and including) the given newest item ID.

Input parameters:

- `folderId` (number, required): The folder ID
- `newestItemId` (number, required): Mark all items with ID <= this value as read

### `list_news_items` (~143 tokens)

List news articles (items). Filter by feed, folder, starred, or all; supports pagination and read/unread filtering.

Input parameters:

- `batchSize` (number): Max items to return (default 20, -1 for all)
- `getRead` (boolean): Include already-read items (default false)
- `id` (number): Feed or folder ID when type is "feed" or "folder" (default 0)
- `offset` (number): Return items older than this item ID (pagination)
- `oldestFirst` (boolean): Return oldest items first (default newest first)
- `type` (string): Scope of items to return (default "all")

### `mark_item_read` (~28 tokens)

Mark a single news item as read.

Input parameters:

- `itemId` (number, required): The item ID

### `mark_item_unread` (~29 tokens)

Mark a single news item as unread.

Input parameters:

- `itemId` (number, required): The item ID

### `star_item` (~28 tokens)

Star (favorite) a single news item.

Input parameters:

- `itemId` (number, required): The item ID

### `unstar_item` (~29 tokens)

Remove the star from a single news item.

Input parameters:

- `itemId` (number, required): The item ID

### `mark_items_read` (~34 tokens)

Mark multiple news items as read in one call.

Input parameters:

- `itemIds` (array, required): The item IDs to mark as read

### `list_mail_accounts` (~29 tokens)

List all configured email accounts in Nextcloud Mail. Returns account IDs, names, and email addresses.

### `list_mailboxes` (~50 tokens)

List all mailboxes (folders) for a Nextcloud Mail account. Returns mailbox names, IDs, and unread counts.

Input parameters:

- `accountId` (number, required): The mail account ID (from list_mail_accounts)

### `mail_list_messages` (~97 tokens)

List email messages in a Nextcloud Mail mailbox. Supports pagination via cursor. Returns subject, sender, date, and message IDs.

Input parameters:

- `cursor` (number): Cursor for pagination (message ID to start after)
- `filter` (string): Filter messages (default: all)
- `limit` (number): Number of messages to return (default: 20)
- `mailboxId` (number, required): The mailbox ID (from list_mailboxes)

### `mail_read_message` (~45 tokens)

Read the full content of an email message by ID. Returns headers, body text, and attachment list.

Input parameters:

- `messageId` (number, required): The message ID (from list_messages)

### `mail_get_attachment` (~93 tokens)

Download an email attachment by message ID and attachment ID. Returns text for text files and calendar invites (ICS), image data for images, extracted text for PDFs (requires pdftotext). Attachment IDs are shown in mail_read_message output.

Input parameters:

- `attachmentId` (string, required): Attachment ID shown in mail_read_message (e.g. "2")
- `messageId` (number, required): Message ID (from mail_read_message)

### `mail_search_messages` (~73 tokens)

Search email messages across all mailboxes by subject or sender. Returns matches with message IDs usable in mail_read_message. For threaded conversations all message IDs in the thread are returned.

Input parameters:

- `limit` (number): Max results (default: 10)
- `query` (string, required): Search query (matches subject and sender name)

### `mail_send_message` (~118 tokens)

Send an email message through Nextcloud Mail. Requires an account ID and recipient addresses.

Input parameters:

- `accountId` (number, required): The mail account ID to send from (from list_mail_accounts)
- `bcc` (array): BCC email addresses
- `body` (string, required): Email body content (plain text)
- `cc` (array): CC email addresses
- `isHtml` (boolean): Whether the body is HTML (default: false)
- `subject` (string, required): Email subject line
- `to` (array, required): Recipient email addresses

### `mail_delete_message` (~36 tokens)

Delete an email message by ID. This typically moves it to trash.

Input parameters:

- `messageId` (number, required): The message ID to delete

### `mail_move_message` (~51 tokens)

Move an email message to a different mailbox/folder.

Input parameters:

- `destMailboxId` (number, required): The destination mailbox ID (from list_mailboxes)
- `messageId` (number, required): The message ID to move

### `mail_set_message_flags` (~57 tokens)

Set flags on an email message (mark as read/unread, star/unstar, mark as important or junk).

Input parameters:

- `flags` (object, required): Flags to set on the message
- `messageId` (number, required): The message ID

### `deck_list_boards` (~29 tokens)

List all Deck boards. Returns id, title, owner, and label count for each board.

### `deck_get_board` (~53 tokens)

Get details of a Deck board including its labels and access control list (ACL). Use deck_list_stacks to see the columns and cards.

Input parameters:

- `boardId` (integer, required): Board ID (from deck_list_boards)

### `deck_create_board` (~50 tokens)

Create a new Deck board.

Input parameters:

- `color` (string): Hex color without # (e.g. "0800fd"). Defaults to "0800fd"
- `title` (string, required): Board title

### `deck_list_stacks` (~54 tokens)

List all stacks (columns) of a Deck board, including the cards in each stack. This gives a full overview of the board layout.

Input parameters:

- `boardId` (integer, required): Board ID (from deck_list_boards)

### `deck_create_stack` (~58 tokens)

Create a new stack (column) on a Deck board.

Input parameters:

- `boardId` (integer, required): Board ID (from deck_list_boards)
- `order` (integer): Position order (0-based)
- `title` (string, required): Stack title

### `deck_get_card` (~67 tokens)

Get full details of a Deck card including description, labels, and assigned users.

Input parameters:

- `boardId` (integer, required): Board ID
- `cardId` (integer, required): Card ID (from deck_list_stacks)
- `stackId` (integer, required): Stack ID (from deck_list_stacks)

### `deck_create_card` (~92 tokens)

Create a new card in a Deck stack.

Input parameters:

- `boardId` (integer, required): Board ID
- `description` (string): Card description (Markdown)
- `duedate` (string): Due date in ISO 8601 format (e.g. 2025-12-31)
- `stackId` (integer, required): Stack ID (from deck_list_stacks)
- `title` (string, required): Card title

### `deck_update_card` (~127 tokens)

Update an existing Deck card. Provide only the fields you want to change. Fetches the current card first to preserve unchanged fields.

Input parameters:

- `boardId` (integer, required): Board ID
- `cardId` (integer, required): Card ID (from deck_list_stacks)
- `description` (string): New description (Markdown)
- `done` (boolean): Mark card as done
- `duedate`: Due date (ISO 8601) or null to clear
- `stackId` (integer, required): Stack ID (from deck_list_stacks)
- `title` (string): New title

### `deck_move_card` (~102 tokens)

Move a card to a different stack (column) on the same board. This is the core kanban action for changing card status.

Input parameters:

- `boardId` (integer, required): Board ID
- `cardId` (integer, required): Card ID
- `order` (integer): Position in target stack (0 = top). Defaults to 0
- `stackId` (integer, required): Current stack ID of the card
- `targetStackId` (integer, required): Destination stack ID

### `deck_archive_card` (~62 tokens)

Archive or unarchive a Deck card.

Input parameters:

- `archive` (boolean): true to archive, false to unarchive
- `boardId` (integer, required): Board ID
- `cardId` (integer, required): Card ID
- `stackId` (integer, required): Stack ID

### `deck_assign_label` (~74 tokens)

Assign a label to a Deck card. Use deck_get_board to see available labels and their IDs.

Input parameters:

- `boardId` (integer, required): Board ID
- `cardId` (integer, required): Card ID
- `labelId` (integer, required): Label ID (from deck_get_board)
- `stackId` (integer, required): Stack ID

### `deck_assign_user` (~63 tokens)

Assign a user to a Deck card.

Input parameters:

- `boardId` (integer, required): Board ID
- `cardId` (integer, required): Card ID
- `stackId` (integer, required): Stack ID
- `userId` (string, required): User ID (login name) to assign

### `list_recipes` (~67 tokens)

List all recipes in Nextcloud Cookbook. Optionally filter by name, category, or keyword.

Input parameters:

- `category` (string): Filter by recipe category
- `keyword` (string): Filter by keyword
- `search` (string): Search term to filter recipes by name (case-insensitive)

### `list_recipe_categories` (~22 tokens)

List all unique recipe categories found across recipes in Nextcloud Cookbook.

### `get_recipe` (~42 tokens)

Get full details of a recipe from Nextcloud Cookbook by its folder name.

Input parameters:

- `folderName` (string, required): The recipe folder name (as shown in list_recipes)

### `create_recipe` (~213 tokens)

Create a new recipe in Nextcloud Cookbook with schema.org Recipe format.

Input parameters:

- `cookTime` (string): Cooking time in ISO 8601 duration (e.g., PT1H)
- `description` (string): Brief description
- `image` (string): Image URL
- `keywords` (string): Comma-separated keywords (e.g., 'pasta,italian')
- `name` (string, required): Recipe name
- `nutrition` (object): Nutrition information
- `prepTime` (string): Preparation time in ISO 8601 duration (e.g., PT30M)
- `recipeCategory` (string): Category (e.g., 'Easy', 'Dessert')
- `recipeIngredient` (array): List of ingredients
- `recipeInstructions` (array): Step-by-step instructions
- `recipeYield` (number): Number of servings
- `tool` (array): Kitchen tools needed
- `totalTime` (string): Total time in ISO 8601 duration
- `url` (string): Source URL

### `update_recipe` (~196 tokens)

Update an existing recipe in Nextcloud Cookbook. Only provided fields are changed.

Input parameters:

- `cookTime` (string): New cook time (ISO 8601 duration)
- `description` (string): New description
- `folderName` (string, required): The recipe folder name
- `image` (string): New image URL
- `keywords` (string): New keywords
- `name` (string): New recipe name
- `nutrition` (object): Nutrition information
- `prepTime` (string): New prep time (ISO 8601 duration)
- `recipeCategory` (string): New category
- `recipeIngredient` (array): New ingredients list
- `recipeInstructions` (array): New instructions list
- `recipeYield` (number): New servings count
- `tool` (array): New tools list
- `totalTime` (string): New total time (ISO 8601 duration)
- `url` (string): New source URL

### `delete_recipe` (~44 tokens)

Delete a recipe from Nextcloud Cookbook. This removes the entire recipe folder including images. This action is irreversible.

Input parameters:

- `folderName` (string, required): The recipe folder name to delete

### `list_map_favorites` (~49 tokens)

List map favorites (saved locations/pins) from Nextcloud Maps. Optionally filter by modification time.

Input parameters:

- `pruneBefore` (number): Unix timestamp — only return favorites modified after this time

### `create_map_favorite` (~100 tokens)

Create a new map favorite (saved location/pin) in Nextcloud Maps. Latitude and longitude are required.

Input parameters:

- `category` (string): Category name (e.g. 'Restaurant', 'Home')
- `comment` (string): A comment or note
- `extensions` (string): Extra data as a string
- `lat` (number, required): Latitude
- `lng` (number, required): Longitude
- `name` (string): Name of the location

### `update_map_favorite` (~86 tokens)

Update an existing map favorite. Only provided fields are changed.

Input parameters:

- `category` (string): New category
- `comment` (string): New comment
- `extensions` (string): New extensions data
- `id` (number, required): Favorite ID
- `lat` (number): New latitude
- `lng` (number): New longitude
- `name` (string): New name

### `delete_map_favorite` (~34 tokens)

Delete a map favorite by its ID. This action is irreversible.

Input parameters:

- `id` (number, required): Favorite ID to delete

### `list_map_devices` (~19 tokens)

List GPS tracking devices registered in Nextcloud Maps.

### `get_map_device_points` (~51 tokens)

Get GPS location points for a specific device. Supports time filtering and pagination.

Input parameters:

- `id` (number, required): Device ID
- `pruneBefore` (number): Unix timestamp — only return points after this time

### `add_map_device_point` (~109 tokens)

Log a GPS location point for a device. The device is auto-created by user_agent if it doesn't exist.

Input parameters:

- `accuracy` (number): GPS accuracy in meters
- `altitude` (number): Altitude in meters
- `battery` (number): Battery level percentage
- `lat` (number, required): Latitude
- `lng` (number, required): Longitude
- `timestamp` (number): Unix timestamp (defaults to now)
- `user_agent` (string): Device identifier (defaults to HTTP User-Agent)

### `update_map_device` (~42 tokens)

Update a device's display color.

Input parameters:

- `color` (string, required): New color (e.g. '#ff0000')
- `id` (number, required): Device ID

### `delete_map_device` (~36 tokens)

Delete a GPS tracking device and all its location points. This action is irreversible.

Input parameters:

- `id` (number, required): Device ID to delete

### `list_map_tracks` (~39 tokens)

List GPS tracks (GPX/KML files) from Nextcloud Maps.

Input parameters:

- `myMapId` (number): Custom map ID to scope to

### `get_map_track` (~42 tokens)

Get full details and content of a track by its ID. Returns metadata and the raw GPX/KML file content.

Input parameters:

- `id` (number, required): Track ID

### `update_map_track` (~68 tokens)

Update a track's color or metadata.

Input parameters:

- `color` (string): New color (e.g. '#00ff00')
- `etag` (string): ETag for concurrency control
- `id` (number, required): Track ID
- `metadata` (string): New metadata as JSON string

### `list_map_photos` (~41 tokens)

List geolocated photos (photos with GPS coordinates) from Nextcloud Maps.

Input parameters:

- `myMapId` (number): Custom map ID to scope to

### `list_map_photos_nonlocalized` (~94 tokens)

List photos that don't have GPS coordinates. Useful for finding photos that can be placed on the map.

Input parameters:

- `limit` (number): Max photos to return (default 250)
- `myMapId` (number): Custom map ID to scope to
- `offset` (number): Pagination offset (default 0)
- `timezone` (string): Timezone string (e.g. 'Europe/Berlin')

### `place_map_photos` (~86 tokens)

Set GPS coordinates on one or more photos. Each photo path is paired with a lat/lng.

Input parameters:

- `lats` (array, required): Latitudes (parallel to paths)
- `lngs` (array, required): Longitudes (parallel to paths)
- `myMapId` (number): Custom map ID to scope to
- `paths` (array, required): File paths in Nextcloud storage

### `reset_map_photo_coords` (~47 tokens)

Remove GPS coordinates from one or more photos.

Input parameters:

- `myMapId` (number): Custom map ID to scope to
- `paths` (array, required): File paths in Nextcloud storage

### `list_maps` (~21 tokens)

List all custom maps created by the user in Nextcloud Maps.

### `create_map` (~33 tokens)

Create a new custom map in Nextcloud Maps.

Input parameters:

- `name` (string): Map name (default: 'New Map')

### `update_map` (~53 tokens)

Update a custom map's properties (e.g. rename).

Input parameters:

- `id` (number, required): Map ID
- `values` (object, required): Key-value pairs to update (e.g. { newName: 'My Trip' })

### `delete_map` (~29 tokens)

Delete a custom map. This action is irreversible.

Input parameters:

- `id` (number, required): Map ID to delete

### `export_map_route` (~121 tokens)

Export a route or track as a GPX file to the user's Nextcloud /Maps folder.

Input parameters:

- `coords` (array, required): Ordered list of coordinates
- `myMapId` (number): Target map ID (defaults to /Maps folder)
- `name` (string, required): Route name (used as filename)
- `totDist` (number): Total distance (for metadata)
- `totTime` (number): Total time (for metadata)
- `type` (string, required): GPX structure type: 'route' (<rte>) or 'track' (<trk>)

### `export_map_favorites` (~92 tokens)

Export favorites as a GPX file to the user's Nextcloud /Maps folder. Filter by categories and time range.

Input parameters:

- `all` (boolean): If true, filename is not prefixed with 'filtered-'
- `begin` (number): Start timestamp filter
- `categoryList` (array, required): Categories to export (e.g. ['Restaurant', 'Home'])
- `end` (number): End timestamp filter

### `import_map_favorites` (~62 tokens)

Import favorites from a file in Nextcloud storage. Supports GPX, KML, KMZ, JSON, and GeoJSON.

Input parameters:

- `path` (string, required): Relative path to the file in Nextcloud storage (e.g. '/Maps/favorites.gpx')

### `export_map_devices` (~79 tokens)

Export device location data as a GPX file to the user's Nextcloud /Maps folder.

Input parameters:

- `all` (boolean): If true, filename is not prefixed with 'filtered-'
- `begin` (number): Start timestamp filter
- `deviceIdList` (array, required): Device IDs to export
- `end` (number): End timestamp filter

### `import_map_devices` (~58 tokens)

Import device location data from a file in Nextcloud storage. Supports GPX, KML, and KMZ.

Input parameters:

- `path` (string, required): Relative path to the file in Nextcloud storage (e.g. '/Maps/track.gpx')

### `photos_list_albums` (~33 tokens)

List all photo albums owned by the current user. Returns album names, item counts, locations, and date ranges.

### `photos_get_album` (~46 tokens)

Get details of a photo album including its files. Returns file IDs (needed for photos_remove_from_album), names, types, and sizes.

Input parameters:

- `name` (string, required): Album name

### `photos_create_album` (~27 tokens)

Create a new photo album.

Input parameters:

- `name` (string, required): Name for the new album

### `photos_delete_album` (~40 tokens)

Delete a photo album. This only removes the album — the underlying files are not deleted.

Input parameters:

- `name` (string, required): Name of the album to delete

### `photos_rename_album` (~36 tokens)

Rename a photo album.

Input parameters:

- `name` (string, required): Current album name
- `newName` (string, required): New album name

### `photos_add_to_album` (~78 tokens)

Add one or more files to a photo album. Files are referenced by their Nextcloud path. The files themselves are not moved — only an album association is created.

Input parameters:

- `albumName` (string, required): Album name
- `filePaths` (array, required): Array of file paths in Nextcloud (e.g., ["/Photos/sunset.jpg"])

### `photos_remove_from_album` (~72 tokens)

Remove one or more files from a photo album by file ID (use photos_get_album to find IDs). This only removes the album association — the files are not deleted.

Input parameters:

- `albumName` (string, required): Album name
- `fileIds` (array, required): File IDs to remove (from photos_get_album output)

### `photos_get_metadata` (~68 tokens)

Get photo/video metadata (EXIF) for a file. Returns camera, lens, ISO, aperture, shutter speed, focal length, GPS coordinates, dimensions, and date taken when available.

Input parameters:

- `path` (string, required): File path in Nextcloud (e.g., "/Photos/sunset.jpg")

### `photos_set_favorite` (~57 tokens)

Mark or unmark a file as favorite.

Input parameters:

- `favorite` (boolean, required): true to mark as favorite, false to unmark
- `path` (string, required): File path in Nextcloud (e.g., "/Photos/sunset.jpg")

### `photos_set_album_location` (~47 tokens)

Set or update the location metadata on a photo album.

Input parameters:

- `location` (string, required): Location string (e.g., "Paris, France")
- `name` (string, required): Album name

### `photos_add_collaborators` (~56 tokens)

Add collaborators (users or groups) to a photo album. Collaborators can view and add photos to the album.

Input parameters:

- `albumName` (string, required): Album name
- `collaborators` (array, required): Array of collaborators to add

### `talk_list_conversations` (~48 tokens)

List all Talk conversations the user has access to. Returns conversation tokens, names, types, and unread message counts.

Input parameters:

- `includeStatus` (boolean): Include user status information (default false)

### `talk_list_messages` (~102 tokens)

List recent messages in a Talk conversation. Returns message content with timestamps and authors.

Input parameters:

- `includeSystemMessages` (boolean): Include system messages like join/leave notifications (default false)
- `lastKnownMessageId` (number): Message ID to start from for pagination (returns messages before this ID)
- `limit` (number): Number of messages to retrieve (default 50, max 200)
- `token` (string, required): Conversation token (from list_conversations)

### `talk_send_message` (~75 tokens)

Send a message to a Talk conversation. Supports replies and silent messages that do not trigger notifications.

Input parameters:

- `message` (string, required): Message text to send
- `replyTo` (number): Message ID to reply to
- `silent` (boolean): Send without triggering notifications (default false)
- `token` (string, required): Conversation token

### `talk_create_conversation` (~78 tokens)

Create a new Talk conversation. One-on-one requires an invite user, group/public require a name.

Input parameters:

- `invite` (string): User ID to invite (required for one-on-one)
- `roomName` (string): Name for the conversation (required for group and public)
- `roomType` (string, required): Type of conversation to create

### `talk_list_participants` (~30 tokens)

List all participants in a Talk conversation with their roles.

Input parameters:

- `token` (string, required): Conversation token

### `talk_add_participant` (~66 tokens)

Add a user, group, or email participant to a Talk conversation.

Input parameters:

- `newParticipant` (string, required): User ID, group ID, or email address to add
- `source` (string): Participant source type (default 'users')
- `token` (string, required): Conversation token

### `talk_remove_participant` (~52 tokens)

Remove a participant from a Talk conversation by their attendee ID (from list_participants).

Input parameters:

- `attendeeId` (number, required): Attendee ID of the participant to remove
- `token` (string, required): Conversation token

### `talk_delete_message` (~40 tokens)

Delete a message from a Talk conversation.

Input parameters:

- `messageId` (number, required): ID of the message to delete
- `token` (string, required): Conversation token

### `talk_create_poll` (~100 tokens)

Create a poll in a Talk conversation. Requires at least 2 options.

Input parameters:

- `maxVotes` (number): Maximum number of votes per participant (0 = unlimited, default 1)
- `options` (array, required): Poll options (minimum 2)
- `question` (string, required): Poll question
- `resultMode` (string): Result visibility: 'public' (default) or 'hidden' until closed
- `token` (string, required): Conversation token

### `talk_react_to_message` (~69 tokens)

Add an emoji reaction to a message in a Talk conversation.

Input parameters:

- `messageId` (number, required): ID of the message to react to
- `reaction` (string, required): Emoji reaction (e.g. '👍', '❤️', '🎉')
- `token` (string, required): Conversation token

### `circles_list` (~53 tokens)

List all circles/teams accessible to the current user. Returns circle IDs, names, owners, and configuration.

Input parameters:

- `limit` (number): Maximum number of circles to return
- `offset` (number): Offset for pagination

### `circles_get` (~40 tokens)

Get detailed information about a specific circle/team, including its description, owner, and configuration flags.

Input parameters:

- `circleId` (string, required): The circle ID to retrieve

### `circles_create` (~81 tokens)

Create a new circle/team. The current user becomes the owner. Set personal=true for a private circle only visible to the owner.

Input parameters:

- `local` (boolean): Restrict to local instance, no federation (default: false)
- `name` (string, required): Name for the new circle
- `personal` (boolean): Create as a personal circle (default: false)

### `circles_delete` (~30 tokens)

Delete a circle/team. Requires owner privileges.

Input parameters:

- `circleId` (string, required): The circle ID to delete

### `circles_list_members` (~49 tokens)

List all members of a circle/team. Returns member IDs (needed for removal), user IDs, types, and permission levels.

Input parameters:

- `circleId` (string, required): The circle ID to list members for

### `circles_add_member` (~116 tokens)

Add a member to a circle/team. Requires moderator privileges or higher. Member type: 1=user (default), 2=group, 4=mail, 16=circle.

Input parameters:

- `circleId` (string, required): The circle ID to add the member to
- `type` (number): Member type: 1=user (default), 2=group, 4=mail, 8=contact, 16=circle
- `userId` (string, required): The user ID (or entity identifier) to add

### `circles_remove_member` (~70 tokens)

Remove a member from a circle/team. Use circles_list_members to get the memberId. Requires moderator privileges or higher.

Input parameters:

- `circleId` (string, required): The circle ID to remove the member from
- `memberId` (string, required): The member ID (from circles_list_members), not the user ID

### `circles_search` (~30 tokens)

Search for circles/teams by name.

Input parameters:

- `term` (string, required): Search term to match against circle names

### `list_bookmarks` (~150 tokens)

List bookmarks from Nextcloud Bookmarks app. Supports search, tag filtering, folder filtering, sorting, and pagination.

Input parameters:

- `folder` (number): Filter by folder ID (-1 for root)
- `limit` (number): Max bookmarks to return (default 10)
- `page` (number): Page number for pagination (starts at 0)
- `search` (string): Search term to filter bookmarks by title/URL/description
- `sortby` (string): Sort field
- `tags` (array): Filter by tags (e.g. ['tech', 'news'])
- `unavailable` (boolean): Only show unavailable bookmarks
- `untagged` (boolean): Only show bookmarks without tags

### `get_bookmark` (~30 tokens)

Get full details of a single bookmark by its ID.

Input parameters:

- `id` (number, required): The bookmark ID

### `create_bookmark` (~96 tokens)

Create a new bookmark in Nextcloud Bookmarks. URL is required; title, description, tags, and folders are optional.

Input parameters:

- `description` (string): Bookmark description
- `folders` (array): Folder IDs to place the bookmark in
- `tags` (array): Tags to assign (e.g. ['tech', 'reference'])
- `title` (string): Bookmark title
- `url` (string, required): The URL to bookmark

### `update_bookmark` (~88 tokens)

Update an existing bookmark. Only provided fields are changed.

Input parameters:

- `description` (string): New description
- `folders` (array): New folder IDs (replaces existing folders)
- `id` (number, required): The bookmark ID to update
- `tags` (array): New tags (replaces existing tags)
- `title` (string): New title
- `url` (string): New URL

### `delete_bookmark` (~33 tokens)

Delete a bookmark by its ID. This action is irreversible.

Input parameters:

- `id` (number, required): The bookmark ID to delete

### `list_bookmark_folders` (~59 tokens)

List the bookmark folder hierarchy. Returns a tree structure of all folders.

Input parameters:

- `layers` (number): Maximum depth of folder levels to return
- `root` (number): Root folder ID to start from (-1 for top level, default)

### `get_bookmark_folder_contents` (~61 tokens)

Get the contents of a bookmark folder (bookmarks and subfolders).

Input parameters:

- `id` (number, required): The folder ID (-1 for root)
- `layers` (number): Depth of subfolder levels to include (default 0 = direct children only)

### `create_bookmark_folder` (~42 tokens)

Create a new bookmark folder.

Input parameters:

- `parent_folder` (number): Parent folder ID (-1 for root, default)
- `title` (string, required): Folder name

### `update_bookmark_folder` (~61 tokens)

Update a bookmark folder (rename or move to a different parent).

Input parameters:

- `id` (number, required): The folder ID to update
- `parent_folder` (number): New parent folder ID (-1 for root)
- `title` (string): New folder name

### `delete_bookmark_folder` (~36 tokens)

Delete a bookmark folder and all its contents. This action is irreversible.

Input parameters:

- `id` (number, required): The folder ID to delete

### `list_bookmark_tags` (~17 tokens)

List all tags used across bookmarks.

### `rename_bookmark_tag` (~47 tokens)

Rename a bookmark tag. All bookmarks with the old tag will be updated.

Input parameters:

- `new_name` (string, required): New tag name
- `old_name` (string, required): Current tag name

### `delete_bookmark_tag` (~35 tokens)

Delete a bookmark tag. The tag will be removed from all bookmarks.

Input parameters:

- `name` (string, required): Tag name to delete

### `list_polls` (~37 tokens)

List all polls the current user can access (own, shared, or public). Returns id, title, type, owner, and status.

### `get_poll` (~43 tokens)

Get full details of a poll by ID: configuration, owner, status, and current user state.

Input parameters:

- `pollId` (integer, required): Poll ID (from list_polls)

### `create_poll` (~61 tokens)

Create a new poll. Type "textPoll" for text options (e.g. lunch choices), "datePoll" for date/time options (e.g. meeting scheduling).

Input parameters:

- `title` (string, required): Poll title
- `type` (string, required): Poll type

### `update_poll` (~175 tokens)

Update a poll configuration. Only provided fields are changed. Set expire to 0 for no expiration, or a unix timestamp to auto-close on that date.

Input parameters:

- `access` (string)
- `allowComment` (boolean)
- `allowMaybe` (boolean)
- `allowProposals` (boolean)
- `anonymous` (boolean)
- `autoReminder` (boolean)
- `description` (string)
- `expire` (integer): Unix timestamp; 0 = no expiration; negative = close immediately
- `hideBookedUp` (boolean)
- `maxVotesPerOption` (integer)
- `maxVotesPerUser` (integer)
- `pollId` (integer, required): Poll ID
- `showResults` (string)
- `title` (string)
- `useNo` (boolean)

### `delete_poll` (~29 tokens)

Permanently delete a poll. This cannot be undone.

Input parameters:

- `pollId` (integer, required): Poll ID

### `close_poll` (~29 tokens)

Close a poll immediately so no further votes are accepted.

Input parameters:

- `pollId` (integer, required): Poll ID

### `reopen_poll` (~29 tokens)

Reopen a previously closed poll so voting can resume.

Input parameters:

- `pollId` (integer, required): Poll ID

### `clone_poll` (~35 tokens)

Clone an existing poll, copying its configuration and options into a new poll.

Input parameters:

- `pollId` (integer, required): Poll ID to clone

### `list_poll_options` (~33 tokens)

List all options for a poll, with vote tallies per option.

Input parameters:

- `pollId` (integer, required): Poll ID

### `add_text_poll_option` (~64 tokens)

Add a text option to a textPoll (e.g. "Pizza", "Sushi"). Use add_date_poll_option for datePolls.

Input parameters:

- `pollId` (integer, required): Poll ID (must be a textPoll)
- `text` (string, required): Option text

### `add_date_poll_option` (~130 tokens)

Add a date/time option to a datePoll. Provide startAt as ISO-8601 (e.g. "2026-05-12T14:00:00Z") and durationSeconds (e.g. 3600 for 1 hour).

Input parameters:

- `durationSeconds` (integer, required): Duration in seconds (0 = single point in time)
- `pollId` (integer, required): Poll ID (must be a datePoll)
- `startAt` (string, required): Start date/time as ISO-8601 (e.g. "2026-05-12T14:00:00Z")

### `delete_poll_option` (~34 tokens)

Delete an option from a poll by option ID.

Input parameters:

- `optionId` (integer, required): Option ID (from list_poll_options)

### `list_poll_votes` (~33 tokens)

List all votes for a poll. Anonymous polls redact voters' identities.

Input parameters:

- `pollId` (integer, required): Poll ID

### `vote_on_poll` (~76 tokens)

Cast or change your vote on a poll option. setTo: "yes" to vote yes, "no" to vote no, "maybe" for a tentative yes (only if allowed).

Input parameters:

- `optionId` (integer, required): Option ID to vote on (from list_poll_options)
- `setTo` (string, required): Vote value

### `list_poll_comments` (~26 tokens)

List all comments on a poll.

Input parameters:

- `pollId` (integer, required): Poll ID

### `add_poll_comment` (~41 tokens)

Post a comment on a poll (requires comments to be enabled).

Input parameters:

- `message` (string, required): Comment text
- `pollId` (integer, required): Poll ID

### `delete_poll_comment` (~34 tokens)

Delete one of your poll comments by comment ID.

Input parameters:

- `commentId` (integer, required): Comment ID (from list_poll_comments)

### `list_poll_shares` (~37 tokens)

List all shares (public link, user invitations, email invitations) for a poll.

Input parameters:

- `pollId` (integer, required): Poll ID

### `add_poll_share` (~115 tokens)

Share a poll. type="public" creates a public link (no extra fields). type="user" invites a Nextcloud user (requires userId). type="email" invites by email (requires userId=email address, displayName).

Input parameters:

- `displayName` (string): Display name (required for type=email)
- `pollId` (integer, required): Poll ID
- `type` (string, required): Share type
- `userId` (string): Nextcloud user ID (for type=user) or email address (for type=email)

### `delete_poll_share` (~39 tokens)

Revoke a poll share by its token (obtained from list_poll_shares or add_poll_share).

Input parameters:

- `token` (string, required): Share token

### `set_poll_subscription` (~58 tokens)

Subscribe or unsubscribe the current user to poll notifications (new votes, comments). Use subscribe=true to subscribe, false to unsubscribe.

Input parameters:

- `pollId` (integer, required): Poll ID
- `subscribe` (boolean, required): true to subscribe, false to unsubscribe

### `list_forms` (~57 tokens)

List forms. type="owned" (default) returns forms the current user owns; "shared" returns forms shared with them; "partial" returns forms the user has an unfinished draft on.

Input parameters:

- `type` (string): Form list scope

### `get_form` (~41 tokens)

Get full details for a form by ID, including questions, options, shares, and metadata.

Input parameters:

- `formId` (integer, required): Form ID (from list_forms)

### `create_form` (~36 tokens)

Create a new empty form. Returns the new form ID. Use update_form to set title/description and create_form_question to add questions.

### `clone_form` (~38 tokens)

Clone an existing form (its questions, options, and settings) into a new form.

Input parameters:

- `formId` (integer, required): Form ID to clone

### `update_form` (~128 tokens)

Update form properties. Only provided fields are changed. state: 0=active, 1=closed, 2=archived. expires=0 disables expiration.

Input parameters:

- `allowEditSubmissions` (boolean)
- `description` (string)
- `expires` (integer): Unix timestamp; 0 = no expiration
- `formId` (integer, required): Form ID
- `isAnonymous` (boolean)
- `showExpiration` (boolean)
- `state`
- `submissionMessage` (string)
- `submitMultiple` (boolean)
- `title` (string)

### `transfer_form_owner` (~55 tokens)

Transfer ownership of a form to another Nextcloud user. The new owner must have access to the Forms app.

Input parameters:

- `formId` (integer, required): Form ID
- `ownerId` (string, required): User ID of the new owner

### `delete_form` (~34 tokens)

Permanently delete a form and all of its submissions. This cannot be undone.

Input parameters:

- `formId` (integer, required): Form ID

### `list_form_questions` (~30 tokens)

List all questions for a form, in display order.

Input parameters:

- `formId` (integer, required): Form ID

### `create_form_question` (~77 tokens)

Add a question to a form. For choice questions use type "multiple" (checkbox), "multiple_unique" (radio), or "dropdown" — then call create_form_options.

Input parameters:

- `formId` (integer, required): Form ID
- `text` (string): Question text (optional at creation)
- `type` (string, required): Question type

### `update_form_question` (~102 tokens)

Update question properties (text, requirement, type, etc.). Only provided fields are changed.

Input parameters:

- `extraSettings` (object): Question-type-specific settings (e.g. validationRegex, allowedFileTypes)
- `formId` (integer, required): Form ID
- `isRequired` (boolean)
- `name` (string): Internal name / shortcode
- `questionId` (integer, required): Question ID
- `text` (string)
- `type` (string)

### `reorder_form_questions` (~55 tokens)

Reorder all questions in a form. Pass the full list of question IDs in the desired order.

Input parameters:

- `formId` (integer, required): Form ID
- `newOrder` (array, required): Full list of question IDs in desired order

### `delete_form_question` (~36 tokens)

Delete a question from a form.

Input parameters:

- `formId` (integer, required): Form ID
- `questionId` (integer, required): Question ID

### `create_form_options` (~68 tokens)

Add one or more options to a choice question (multiple/multiple_unique/dropdown). Pass an array of option texts.

Input parameters:

- `formId` (integer, required): Form ID
- `optionTexts` (array, required): One or more option texts to create
- `questionId` (integer, required): Question ID

### `update_form_option` (~65 tokens)

Update a choice option's text (and optionally its order).

Input parameters:

- `formId` (integer, required): Form ID
- `optionId` (integer, required): Option ID
- `order` (integer)
- `questionId` (integer, required): Question ID
- `text` (string)

### `reorder_form_options` (~66 tokens)

Reorder all options for a choice question. Pass the full list of option IDs in the desired order.

Input parameters:

- `formId` (integer, required): Form ID
- `newOrder` (array, required): Full list of option IDs in desired order
- `questionId` (integer, required): Question ID

### `delete_form_option` (~47 tokens)

Delete an option from a choice question.

Input parameters:

- `formId` (integer, required): Form ID
- `optionId` (integer, required): Option ID
- `questionId` (integer, required): Question ID

### `create_form_share` (~127 tokens)

Share a form. type="user" shares with a Nextcloud user (shareWith=userId), "group" with a group (shareWith=groupId), "link" creates a public link (shareWith is the generated hash, omit it at creation).

Input parameters:

- `formId` (integer, required): Form ID
- `permissions` (array): Permissions to grant. Defaults to ["submit"] if omitted.
- `shareWith` (string): User ID (type=user) or group ID (type=group). Omit for type=link.
- `type` (string, required): Share type

### `update_form_share` (~52 tokens)

Update the permissions on an existing form share.

Input parameters:

- `formId` (integer, required): Form ID
- `permissions` (array, required): New permission set
- `shareId` (integer, required): Share ID (from get_form)

### `delete_form_share` (~35 tokens)

Revoke a form share.

Input parameters:

- `formId` (integer, required): Form ID
- `shareId` (integer, required): Share ID

### `list_form_submissions` (~83 tokens)

List submissions for a form. Supports free-text search (query) and pagination (limit/offset). Only form owners/admins see all submissions.

Input parameters:

- `formId` (integer, required): Form ID
- `limit` (integer): Max submissions to return
- `offset` (integer): Offset for pagination
- `query` (string): Free-text search across answer values

### `get_form_submission` (~39 tokens)

Get a single submission with all of its answers.

Input parameters:

- `formId` (integer, required): Form ID
- `submissionId` (integer, required): Submission ID

### `create_form_submission` (~114 tokens)

Submit answers to a form. `answers` is an object keyed by question ID; values are always arrays. For text questions: ["My answer"]. For choice questions: [optionId1, optionId2] (numeric IDs). Public links require `shareHash`.

Input parameters:

- `answers` (object, required): Object keyed by question ID; each value is an array of strings or option IDs
- `formId` (integer, required): Form ID
- `shareHash` (string): Share hash — required when submitting via a public link

### `delete_form_submission` (~36 tokens)

Delete a single submission by ID.

Input parameters:

- `formId` (integer, required): Form ID
- `submissionId` (integer, required): Submission ID

### `delete_all_form_submissions` (~39 tokens)

Delete every submission for a form. The form itself is kept. This cannot be undone.

Input parameters:

- `formId` (integer, required): Form ID

### `export_form_submissions` (~86 tokens)

Export a form's submissions as a spreadsheet into the user's Nextcloud storage. Returns the destination path. Use read_file / get_file_info afterwards to work with the export.

Input parameters:

- `fileFormat` (string, required): Export file format
- `formId` (integer, required): Form ID
- `path` (string, required): Target folder path inside the user's Nextcloud (e.g. "/Exports")

### `get_text_workspace` (~69 tokens)

Get metadata of the Text workspace file (Readme.md) for a folder. Returns the file's id, name, mimetype and path, or reports that no workspace exists yet.

Input parameters:

- `path` (string, required): Folder path relative to the user's root (e.g. '/Projects/Acme')

### `read_text_workspace` (~62 tokens)

Read the content of a folder's Text workspace file (Readme.md). Returns markdown text, or a 'no workspace' message if none exists.

Input parameters:

- `path` (string, required): Folder path relative to the user's root (e.g. '/Projects/Acme')

### `write_text_workspace` (~76 tokens)

Create or overwrite a folder's Text workspace file. If a workspace already exists, its existing filename is reused; otherwise Readme.md is created at the folder root.

Input parameters:

- `content` (string, required): Markdown content to write
- `path` (string, required): Folder path relative to the user's root (e.g. '/Projects/Acme')

### `delete_text_workspace` (~61 tokens)

Delete the Text workspace file (Readme.md) for a folder. The folder itself is kept. No-op if the folder has no workspace.

Input parameters:

- `path` (string, required): Folder path relative to the user's root (e.g. '/Projects/Acme')

### `get_text_workspace_edit_url` (~90 tokens)

Get a one-shot direct-edit URL for a folder's Text workspace. Opens the live collaborative editor in a browser. The Readme.md is created automatically if it does not exist yet. Hand the URL to a human collaborator — the MCP server does not participate in the editing session.

Input parameters:

- `path` (string, required): Folder path relative to the user's root (e.g. '/Projects/Acme')

### `list_text_tasks` (~49 tokens)

List AI task types available in Nextcloud's TaskProcessing framework (summarize, headline, image-to-text, text-to-image, …). Shows which task types have at least one provider configured.

### `process_text` (~140 tokens)

Submit a text-processing task to Nextcloud's AI framework and return the task ID. Use get_task_result to poll until it completes. Common task types: 'core:text2text' (free prompt), 'core:summarize' (summary), 'core:headline' (headline), 'core:extract_topics' (topics).

Input parameters:

- `customId` (string): Optional identifier to tag the task for later retrieval
- `input` (string, required): The text to process
- `taskType` (string, required): Task type ID (e.g. 'core:summarize', 'core:headline', 'core:extract_topics', 'core:text2text')

### `get_task_result` (~69 tokens)

Get the status and result of a Nextcloud AI task previously created by process_text or generate_image. Status: 1=scheduled, 2=running, 3=successful, 4=failed.

Input parameters:

- `taskId` (number, required): The task ID returned by process_text or generate_image

### `generate_image` (~97 tokens)

Generate an image from a text prompt using Nextcloud's text-to-image AI provider (e.g. Stable Diffusion via LocalAI). Returns the task ID; use get_task_result to check completion.

Input parameters:

- `prompt` (string, required): Text description of the image to generate
- `savePath` (string): Optional Nextcloud path to save the generated image (e.g. '/Photos/generated.png'). If omitted, only the task ID is returned.

### `translate_text` (~94 tokens)

Translate text between languages using Nextcloud's configured translation provider. If called without text, returns available language pairs.

Input parameters:

- `fromLanguage` (string): Source language code (e.g. 'en', 'de', 'fr')
- `text` (string): Text to translate. Omit to list available language pairs.
- `toLanguage` (string): Target language code (e.g. 'en', 'de', 'fr')

### `get_user_status` (~48 tokens)

Get the current user's presence status (online, away, DND, invisible, custom message)

Input parameters:

- `userId` (string): User ID to check (defaults to the configured Nextcloud user)

### `set_user_status` (~39 tokens)

Set the current user's status type (online, away, dnd, invisible, offline)

Input parameters:

- `statusType` (string, required): Status type to set

### `set_user_status_message` (~81 tokens)

Set a custom status message with optional emoji icon and auto-clear time

Input parameters:

- `clearAt` (number): Unix timestamp when the message should auto-clear (null = never)
- `message` (string, required): Custom status message text
- `statusIcon` (string): Status emoji icon (e.g. "☕", "🏠", "🤒")

### `clear_user_status_message` (~18 tokens)

Clear the current user's custom status message

### `list_user_statuses` (~43 tokens)

List all users' statuses for team presence visibility

Input parameters:

- `limit` (number): Maximum number of statuses to return
- `offset` (number): Offset for pagination

### `list_notifications` (~16 tokens)

List all notifications for the current user

### `get_notification` (~27 tokens)

Get details of a specific notification by ID

Input parameters:

- `id` (number, required): The notification ID

### `mark_notification_read` (~33 tokens)

Mark a notification as read (deletes it)

Input parameters:

- `id` (number, required): The notification ID to mark as read

### `delete_all_notifications` (~17 tokens)

Delete all notifications for the current user

### `list_activity` (~128 tokens)

List recent entries from the Nextcloud activity feed (file changes, shares, comments, calendar/contact edits, etc.) for the current user.

Input parameters:

- `filter` (string): Which feed to read: 'all' (default), 'self' (your own actions), or 'by' (others' actions)
- `limit` (number): Maximum number of activities to return (default 50)
- `since` (number): Return activities after this activity_id (for pagination)
- `sort` (string): Sort order by time: 'desc' (newest first, default) or 'asc'

### `get_object_activity` (~97 tokens)

List the activity history for a single object, e.g. one file. Use object_type 'files' with a file ID to see what happened to that file.

Input parameters:

- `limit` (number): Maximum number of activities to return (default 50)
- `object_id` (string, required): The object ID (e.g. the Nextcloud file ID)
- `object_type` (string): The object type to filter by (default 'files')

### `list_announcements` (~54 tokens)

List announcements from the Nextcloud Announcement Center (org-wide notices such as maintenance windows, events, or news). Returns newest first.

Input parameters:

- `offset` (number): Return announcements before this offset (for pagination, default 0)

### `create_announcement` (~200 tokens)

Create a new announcement in the Announcement Center. This is visible to all or selected groups and can trigger notifications/emails — use deliberately. Requires the configured Nextcloud user to be an admin.

Input parameters:

- `activities` (boolean): Publish to the activity feed (default true)
- `comments` (boolean): Allow comments (default true)
- `deleteTime` (number): Unix timestamp (seconds) to automatically delete the announcement
- `emails` (boolean): Send emails (default false)
- `groups` (array): Group IDs to target, or ['everyone'] for all users (default)
- `message` (string, required): The announcement body (Markdown supported)
- `notifications` (boolean): Send notifications (default true)
- `plainMessage` (string): Plain-text version of the message (defaults to message)
- `scheduleTime` (number): Unix timestamp (seconds) to publish the announcement later
- `subject` (string, required): The announcement title (kept short)

### `delete_announcement` (~39 tokens)

Delete an announcement by its ID. Requires the configured Nextcloud user to be an admin.

Input parameters:

- `id` (number, required): The announcement ID to delete

### `get_registration_settings` (~53 tokens)

Read the Nextcloud Registration app settings (self-service signup configuration), such as allowed email domains, whether admin approval is required, and the default group for new users. Requires the configured Nextcloud user to be an admin.

### `update_registration_settings` (~72 tokens)

Update one or more Nextcloud Registration app settings. Boolean settings use the strings 'yes'/'no'; allowed_domains takes a JSON array string (e.g. '["example.com"]'). Requires the configured Nextcloud user to be an admin.

Input parameters:

- `settings` (array, required): One or more key/value pairs to update

### `reset_registration_setting` (~52 tokens)

Reset a Nextcloud Registration app setting to its default by deleting the stored value. Requires the configured Nextcloud user to be an admin.

Input parameters:

- `key` (string, required): The Registration config key to reset to its default

### `get_terms_of_service` (~69 tokens)

Read the Nextcloud Terms of Service admin configuration: all published terms (by country/language), the enforcement settings (tos_for_users, tos_on_public_shares), and the valid country and language codes that can be used when setting terms. Requires the configured Nextcloud user to be an admin.

### `set_terms_of_service` (~137 tokens)

Create or update the terms of service for a given country/language pair. If terms already exist for that pair they are replaced, otherwise new terms are created. Use get_terms_of_service to discover valid country/language codes; an invalid code returns an error (HTTP 417). Requires the configured Nextcloud user to be an admin.

Input parameters:

- `body` (string, required): The terms text (markdown: headers, formatting, lists, links)
- `countryCode` (string): 2-letter region code, or "--" for global (default)
- `languageCode` (string, required): 2-letter language code (e.g. "en")

### `delete_terms_of_service` (~50 tokens)

Delete a single terms of service entry by its id (see get_terms_of_service). Requires the configured Nextcloud user to be an admin.

Input parameters:

- `id` (number, required): The terms id to delete

### `reset_terms_signatures` (~52 tokens)

Reset ALL users' terms of service signatures org-wide, forcing every user to accept the terms again on next login. This is destructive and cannot be undone. Requires the configured Nextcloud user to be an admin.

### `update_terms_settings` (~89 tokens)

Update the Terms of Service enforcement settings: whether logged-in users must accept the terms (tos_for_users) and whether the terms apply to public shares (tos_on_public_shares). Requires the configured Nextcloud user to be an admin.

Input parameters:

- `tosForUsers` (boolean): Require logged-in users to accept the terms
- `tosOnPublicShares` (boolean): Apply the terms to public shares

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/elgorro-aiquila-mcp/aiquila-mcp#diagnostics

## Score history

- 2026-08-03: 75
- 2026-08-02: 49
- 2026-08-01: 0
- 2026-07-31: 30
- 2026-07-30: 0
- 2026-07-29: 83
- 2026-07-28: 19
- 2026-07-27: 40

## Links

- npm package: https://www.npmjs.com/package/aiquila-mcp
- Socket report: https://socket.dev/npm/package/aiquila-mcp
- Changelog RSS feed: https://verifymcp.io/servers/elgorro-aiquila-mcp/aiquila-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/elgorro-aiquila-mcp/aiquila-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/elgorro-aiquila-mcp/aiquila-mcp
