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.
| Domain | Tools |
|---|---|
| Workspace | 3 |
| Board | 11 |
| Search | 1 |
| Docs | 8 |
| Notifications | 3 |
| Chat | 2 |
| Comment | 3 |
| Drive | 5 |
| Export | 1 |
| Total | 37 |
The server is stateless, so board/table/row tools need explicit hex ObjectIds. The discovery flow is get_workspace_info → list_boards → list_tables → get_table_schema → list_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).
| Tool | Description | Public API capability |
|---|---|---|
get_workspace_info | Basic metadata about the workspace the token belongs to (name, slug, seat count, timestamps). | GET /workspace/info |
list_workspace_members | List members to resolve a user id from a name or email; offset-paginated, optional query. | GET /workspace/members |
list_workspace_teams | List 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.
| Tool | Description | Public API capability |
|---|---|---|
list_boards | List boards the token can access, optional name search. Start here to find a boardId. | GET /board/list-boards |
get_board | Metadata for a single board by boardId. | GET /board/{boardId} |
list_tables | List a board's tables with column definitions, optional name search. | GET /board/{boardId}/tables |
get_table_schema | Full column definitions for a table, including option IDs for STATUS/DROPDOWN/LABELS columns. | GET /board/{boardId}/table/{tableId} |
list_rows | List rows in a table with optional query, structured filter, and sort. Not paginated. | GET /board/{boardId}/table/{tableId}/rows |
get_row | Get one row by hex rowId or by visible rowNumber (provide exactly one). | GET …/row/{rowId} or GET …/row-number/{rowNumber} |
create_row | Create a row from { columnId, value } cells; optional legacy description. | POST /board/{boardId}/table/{tableId}/row |
update_row | Update cell values of an existing row by rowId (does not edit long text). | PATCH …/row/{rowId} |
delete_row | Permanently delete a row by rowId. No undo. | DELETE …/row/{rowId} |
get_row_markdown | Read 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_markdown | Write 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 |
Search
Scope: workspace-level (results filtered by token permissions).
| Tool | Description | Public API capability |
|---|---|---|
search | Cross-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).
| Tool | Description | Public API capability |
|---|---|---|
search_docs | Full-text search across documents with ranked hits and highlights. | GET /docs/search |
get_docs_tree | Browse the document hierarchy; omit parentId for root, bound with depth. | GET /docs/tree |
get_doc | Document metadata (title, icon, cover, owner, parent, timestamps) by docId. | GET /docs/{docId} |
get_doc_content | Full markdown body of a document by docId (can be large). | GET /docs/{docId}/md |
create_doc | Create a document with a title, optional parentId and seed content. | POST /docs/ |
set_doc_content | Write markdown (replace/append/prepend) to a document body. Async (HTTP 202). | POST /docs/{docId}/md |
update_doc_metadata | Update a document's title, icon, and/or cover (not the body). | PATCH /docs/{docId} |
delete_doc | Delete a document by docId (owner only). No undo. | DELETE /docs/{docId} |
Notifications
Scope: access_notifications (for the token's own user).
| Tool | Description | Public API capability |
|---|---|---|
list_notifications | List the token user's notifications with unreadCount; id-cursor paginated (after/before). | GET /notifications/ |
update_notification | Mark one notification read or unread by notificationId. | PATCH /notifications/{notificationId} |
delete_notification | Delete one notification by notificationId. No undo. | DELETE /notifications/{notificationId} |
Chat
Scope: access_channels.
| Tool | Description | Public API capability |
|---|---|---|
list_channels | List channels and DM conversations; filter by query/type/kind/participantId; offset-paginated. | GET /chat/channels |
send_message | Send 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.
| Tool | Description | Public API capability |
|---|---|---|
list_row_comments | List a row's comments (newest first) with author and attachment metadata; cursor-paginated; visibility filter. | GET …/row/{rowId}/comments |
add_row_comment | Add a comment to a row; visibility is internal (default) or external. | POST …/row/{rowId}/comment |
get_row_attachment_url | Resolve 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).
| Tool | Description | Public API capability |
|---|---|---|
get_drive_tree | Browse the drive as a nested file/folder tree; depth-bounded, with truncation drill-down. | GET /drive/tree |
search_drive | Full-text search across drive files and folders. | GET /drive/search |
get_drive_item | Metadata for a single file or folder by fileId. | GET /drive/files/{fileId} |
get_drive_download_url | Time-limited presigned CloudFront download URL for a file (no auth needed to fetch). | GET /drive/files/{fileId}/download |
create_drive_folder | Create a folder at root or under a parentId. | POST /drive/folders |
Export
Scope: access_boards.
| Tool | Description | Public API capability |
|---|---|---|
export_table | Render 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
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.
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.