Skip to content

Productivity

AI agents that use Nextcloud

UtilitySpaces gives an AI agent scoped access to Nextcloud through its own encrypted connection, not your password. The agent can call 35 named Nextcloud tools, and the 21 that write wait for a person's approval unless an admin has set the connection to run without asking. Every call is written to a hash-chained audit log with its arguments and its result.

What an agent can do in Nextcloud

Files, Talk, Deck, Tables, Calendar and search on a self-hosted Nextcloud server. An agent calls these by name, and matching is exact.

Every tool a Nextcloud connection exposes, and whether it writes, which waits for approval by default
ToolWhat it doesWaits for approval by default
Get current userThe account this connection acts as (cheap credential check).No — read only
List Talk conversationsTalk rooms this account is in, with each room's token (the id the message tools take) and unread counts.No — read only
Read Talk messagesA Talk room's messages, newest first. For older ones pass the smallest id you have as lastKnownMessageId. {mention-user1}-style placeholders in a message are filled from its messageParameters.No — read only
Send Talk messagePost a message in a Talk room as this account.Yes — it writes
List Deck boardsDeck boards shared with this account.No — read only
List board cardsA board's stacks (its columns, e.g. To do / Doing / Done) with their cards.No — read only
Create cardAdd a card to one stack of a board.Yes — it writes
Move cardMove a card to another stack (e.g. to Done), or reorder it within its own.Yes — it writes
Comment on cardAdd a comment to a Deck card.Yes — it writes
List tablesNextcloud Tables shared with this account.No — read only
List table columnsA table's columns. Rows name their cells by these column ids.No — read only
List table rowsA table's rows; each cell is {columnId, value}, columns from list_table_columns.No — read only
Add table rowAdd a row to a table.Yes — it writes
Update table rowChange cells of one row; cells not named keep their value.Yes — it writes
Share fileShare a file or folder. shareType user, group or team (shareWith = id from find_people) or room (shareWith = Talk room token; everyone in that conversation gets it, a public room's guests too); link, email and federated reach outside this server and always ask a person. permissions: 1 read +2 edit +4 create +8 delete +16 reshare.Yes — it writes
Find peopleUsers, groups and teams (source circles) matching a name, with the ids sharing, assigning, inviting and @mentions take.No — read only
Create Talk conversationCreate a Talk room; invite takes user ids. roomType public lets anyone with the link in and always asks a person.Yes — it writes
Add Talk participantAdd someone to a Talk room. source users, groups or circles (teams); emails and federated_users invite people from outside this server and always ask a person.Yes — it writes
Create boardCreate a Deck board.Yes — it writes
Create stackAdd a stack (a column such as To do) to a board.Yes — it writes
Assign cardAssign a user to a Deck card.Yes — it writes
Create tableCreate an empty table; add its columns with create_column.Yes — it writes
Create columnAdd a column to a table. type text (subtype line, rich, link), number (progress, stars), selection (multi, check), datetime (date, time) or usergroup. options holds the type's settings, e.g. {"selectionOptions":["Open","Done"]} or {"numberMin":0,"numberMax":100,"numberSuffix":"%"}.Yes — it writes
List filesFiles and folders in a folder of this account's Files (shared ones included), with size, type, modified time and fileId. Paths start at its root, e.g. "/Projects/Q4".No — read only
Read fileA file's text: text files as they are, PDF and office files (docx, xlsx, pptx, odt...) extracted. A long file comes in pieces: pass nextOffset back as offset.No — read only
Write fileCreate a file. Text in content, a binary file (e.g. a .docx you built) base64 in contentBase64. Missing folders are created. A file that exists is replaced only with overwrite true, which asks a person (Nextcloud keeps the old version). A file written into a folder shared by public link is public at once.Yes — it writes
Create folderCreate a folder, and any missing folders above it.Yes — it writes
Move fileMove or rename a file or folder. It never replaces: if the target exists it fails, and the target must be deleted first (which asks a person). Moving it out of a shared folder takes it away from the people it was shared with.Yes — it writes
Delete fileMove a file or folder to the trash bin, where it can be restored. Always asks a person first.Yes — it writes
SearchSearch Nextcloud. provider (default files): files, talk-message, talk-conversations, search-deck-card-board, search-deck-comment, calendar, tasks, contacts, collectives-pages, collectives-page-content, tables-search-tables, notes, mail, comments, forms; "all" searches files, Talk, Deck, calendar, tasks, contacts, Collectives and Tables at once. Pass cursor back for the next page.No — read only
Update cardChange a Deck card's title, description, due date ("" clears it) or done state; what you leave out keeps its value.Yes — it writes
List calendarsCalendars this account sees (its own and shared ones): the id the event tools take, and whether each holds events (VEVENT), tasks (VTODO) or both.No — read only
List eventsEvents (or tasks) of a calendar from from to to (ISO; default today to 30 days ahead; tasks: all unless a range is given). A recurring event comes as its occurrences. href is what a DELETE through request takes.No — read only
Save event or taskCreate an event or task, or change one by uid (what you leave out keeps its value). Times ISO 8601 with offset (2026-10-20T10:00:00+03:00; none = UTC); end defaults to an hour after start. allDay takes dates, end inclusive. attendees: user ids for people on this server; an email address invites someone outside it and always asks a person.Yes — it writes
Nextcloud requestAny other Nextcloud call, on this server only. Every method but GET is a write, and a write that is not one of these recipes asks a person. MOVE/COPY, and a PUT of a file or calendar object, replace what is there only with overwrite true, which asks too. {user} is this account's id. Recipes: copy a file: COPY /remote.php/dav/files/{user}/a.txt destination /remote.php/dav/files/{user}/b.txt; Talk (/ocs/v2.php/apps/spreed/api): participants GET v4/room/{token}/participants; react POST v1/reaction/{token}/{messageId} {reaction}; edit PUT v1/chat/{token}/{messageId} {message}, DELETE it to delete; mark read POST v1/chat/{token}/read {lastReadMessage}; description PUT v4/room/{token}/description {description}; poll POST v1/poll/{token} {question,options,resultMode:0,maxVotes:1}, vote POST v1/poll/{token}/{pollId} {optionIds}; Deck (/index.php/apps/deck/api/v1.0/boards/{b}/stacks/{s}/cards/{c}): delete DELETE it; archive PUT …/archive; unassign PUT …/unassignUser {userId}; label PUT …/assignLabel {labelId} (labels: GET /index.php/apps/deck/api/v1.0/boards/{b}); share a board (asks) POST …/boards/{b}/acl {type:0 user|1 group|7 team,participant,permissionEdit,permissionShare,permissionManage}; Tables (/index.php/apps/tables/api/1): share (asks) POST tables/{id}/shares {receiver,receiverType:user|group,permissionRead,permissionCreate,permissionUpdate,permissionDelete,permissionManage}; delete a row DELETE rows/{id}; delete an event: DELETE its href from list_events; Collectives: GET /ocs/v2.php/apps/collectives/api/v1.0/collectives, pages …/collectives/{id}/pages; page text is markdown in the Collectives folder, use the file tools; activity GET /ocs/v2.php/apps/activity/api/v2/activity; notifications GET /ocs/v2.php/apps/notifications/api/v2/notifications; versions PROPFIND /remote.php/dav/versions/{user}/versions/{fileId}, restore one (asks, as it replaces the current text): MOVE it destination /remote.php/dav/versions/{user}/restore/target; trash PROPFIND /remote.php/dav/trashbin/{user}/trash, restore: MOVE an item destination /remote.php/dav/trashbin/{user}/restore/{name}.Yes — it writes

14 read tools, 21 write tools. Generated from the connector catalogue the product runs on, so it cannot list a tool that does not exist.

What waits for a person

Reads run on their own. These do not — each one waits in Approvals for an owner or admin unless an admin has set this connection to run writes without asking, and every call toNextcloud, approved, rejected or unattended, is logged.

  • Send Talk message POST
  • Create card POST
  • Move card PUT
  • Comment on card POST
  • Add table row POST
  • Update table row PUT
  • Share file POST
  • Create Talk conversation POST
  • Add Talk participant POST
  • Create board POST
  • Create stack POST
  • Assign card PUT
  • Create table POST
  • Create column POST
  • Write file PUT
  • Create folder
  • Move file
  • Delete file DELETE
  • Update card PUT
  • Save event or task PUT
  • Nextcloud request

What connecting Nextcloud takes

Nextcloud uses an API key you create in Nextcloud and paste in once. A workspace admin sets the connection up; the fields are:

  • Server URL
  • Username
  • App password

Credentials are encrypted and bound to your workspace, never read back, and every outbound call passes one guarded fetch — the connector security posture sets out exactly how, and the security page covers the platform around it.

Where Nextcloud fits

Give an agent Nextcloud work by writing a message in the inbox, or put its tools in a scheduled flow. What the run cost is on the cost breakdown.

Other productivity integrations: Airtable, Asana, Calendly. Or see every application agents can connect to.

See it doing your actual work

Open a demo workspace, connect one app, and give an agent a real job. No card, no sales call.

We reply to every message within one business day.

Try the demo