Skip to main content

MCP Tool Reference

The Copera MCP server exposes 37 tools across nine domains. Each tool is a thin wrapper over a Copera Public API endpoint — the Public API capability column shows the underlying endpoint each tool calls.

DomainTools
Workspace3
Board11
Search1
Docs8
Notifications3
Chat2
Comment3
Drive5
Export1
Total37
Discovery is explicit

The server is stateless, so board/table/row tools need explicit hex ObjectIds. The discovery flow is get_workspace_infolist_boardslist_tablesget_table_schemalist_rows. Always call get_table_schema before writing rows so you use real columnIds and valid option IDs.

Workspace

Scope: workspace-level (results filtered by token permissions).

ToolDescriptionPublic API capability
get_workspace_infoBasic metadata about the workspace the token belongs to (name, slug, seat count, timestamps).GET /workspace/info
list_workspace_membersList members to resolve a user id from a name or email; offset-paginated, optional query.GET /workspace/members
list_workspace_teamsList teams with their participant user ids; offset-paginated, optional query.GET /workspace/teams

Board

Scope: access_boards. The discovery → query → write loop over boards, tables, and rows.

ToolDescriptionPublic API capability
list_boardsList boards the token can access, optional name search. Start here to find a boardId.GET /board/list-boards
get_boardMetadata for a single board by boardId.GET /board/{boardId}
list_tablesList a board's tables with column definitions, optional name search.GET /board/{boardId}/tables
get_table_schemaFull column definitions for a table, including option IDs for STATUS/DROPDOWN/LABELS columns.GET /board/{boardId}/table/{tableId}
list_rowsList rows in a table with optional query, structured filter, and sort. Not paginated.GET /board/{boardId}/table/{tableId}/rows
get_rowGet one row by hex rowId or by visible rowNumber (provide exactly one).GET …/row/{rowId} or GET …/row-number/{rowNumber}
create_rowCreate a row from { columnId, value } cells; optional legacy description.POST /board/{boardId}/table/{tableId}/row
update_rowUpdate cell values of an existing row by rowId (does not edit long text).PATCH …/row/{rowId}
delete_rowPermanently delete a row by rowId. No undo.DELETE …/row/{rowId}
get_row_markdownRead long-text markdown: the legacy row description, or a RICH TEXT column cell if columnId is given.GET …/row/{rowId}/md or …/column/{columnId}/md
set_row_markdownWrite markdown (replace/append/prepend) to the legacy description or a RICH TEXT column cell. Async (HTTP 202).POST …/row/{rowId}/md or …/column/{columnId}/md

Scope: workspace-level (results filtered by token permissions).

ToolDescriptionPublic API capability
searchCross-entity full-text search over documents, channels, messages, todos, drive files, voice transcriptions, and AI chats. Restrict with types.GET /search/

Docs

Scope: access_docs (documents are PAT-only).

ToolDescriptionPublic API capability
search_docsFull-text search across documents with ranked hits and highlights.GET /docs/search
get_docs_treeBrowse the document hierarchy; omit parentId for root, bound with depth.GET /docs/tree
get_docDocument metadata (title, icon, cover, owner, parent, timestamps) by docId.GET /docs/{docId}
get_doc_contentFull markdown body of a document by docId (can be large).GET /docs/{docId}/md
create_docCreate a document with a title, optional parentId and seed content.POST /docs/
set_doc_contentWrite markdown (replace/append/prepend) to a document body. Async (HTTP 202).POST /docs/{docId}/md
update_doc_metadataUpdate a document's title, icon, and/or cover (not the body).PATCH /docs/{docId}
delete_docDelete a document by docId (owner only). No undo.DELETE /docs/{docId}

Notifications

Scope: access_notifications (for the token's own user).

ToolDescriptionPublic API capability
list_notificationsList the token user's notifications with unreadCount; id-cursor paginated (after/before).GET /notifications/
update_notificationMark one notification read or unread by notificationId.PATCH /notifications/{notificationId}
delete_notificationDelete one notification by notificationId. No undo.DELETE /notifications/{notificationId}

Chat

Scope: access_channels.

ToolDescriptionPublic API capability
list_channelsList channels and DM conversations; filter by query/type/kind/participantId; offset-paginated.GET /chat/channels
send_messageSend a message to a channel (channelId) or direct-message a user (userId) — exactly one.POST /chat/channel/{channelId}/send-message or POST /chat/direct-message/send-message

Comment

Scope: access_boards. Row comments and attachment references.

ToolDescriptionPublic API capability
list_row_commentsList a row's comments (newest first) with author and attachment metadata; cursor-paginated; visibility filter.GET …/row/{rowId}/comments
add_row_commentAdd a comment to a row; visibility is internal (default) or external.POST …/row/{rowId}/comment
get_row_attachment_urlResolve an authenticated downloadUrl for a FILE-column or comment attachment (no bytes returned).…/column/{columnId}/file/{fileId}/download or …/comment/{commentId}/file/{fileId}/download

Drive

Scope: access_drive (drive is PAT-only).

ToolDescriptionPublic API capability
get_drive_treeBrowse the drive as a nested file/folder tree; depth-bounded, with truncation drill-down.GET /drive/tree
search_driveFull-text search across drive files and folders.GET /drive/search
get_drive_itemMetadata for a single file or folder by fileId.GET /drive/files/{fileId}
get_drive_download_urlTime-limited presigned CloudFront download URL for a file (no auth needed to fetch).GET /drive/files/{fileId}/download
create_drive_folderCreate a folder at root or under a parentId.POST /drive/folders

Export

Scope: access_boards.

ToolDescriptionPublic API capability
export_tableRender a table view to CSV/XLSX/JSON/MARKDOWN/HTML/PDF/ZIP/ICS; inline or queued; saveToDrive for large/binary.POST /board/{boardId}/table/{tableId}/export

Behavior notes

Async writes are eventually consistent

set_row_markdown and set_doc_content are queued (HTTP 202) — re-read with get_row_markdown / get_doc_content to confirm the change landed. Channel sends are synchronous; direct messages are queued and may not appear immediately.

Destructive tools cannot be undone

delete_row, delete_doc, and delete_notification permanently remove data. Confirm the target id before calling them.

No tool ever returns raw file bytes. get_drive_download_url returns a presigned URL you can fetch without auth; get_row_attachment_url returns an authenticated downloadUrl you fetch yourself with your bearer token.

For the request/response schema of each underlying endpoint, see the API Reference.