# Coda — how to use (mcp.ai)

Connect your Coda account and use 110 tools for productivity straight from your AI agent. Connect with your own API key. Collaborative workspace platform that transforms documents into powerful tools for team productivity and project management.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_coda?ms=1787293500000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `coda_add_a_category_for_pack`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/coda`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/coda/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/coda/add/a/category/for/pack` — Add a publishing category for a given pack.
  - body: { packId: integer, categoryName: string }
- `POST https://api.mcp.ai/api/coda/add/a/maker/for/pack` — Add a maker to a Pack. Makers are users who are displayed as contributors on the Pack's public listing page. You must be an owner or admin of the Pack to add makers. This is typically used to credit c
  - body: { packId: integer, loginId: string }
- `POST https://api.mcp.ai/api/coda/add/a/permission/for/pack` — Create or modify permissions for a given Pack. This action allows you to grant access to a Pack for users or workspaces. If a permission already exists for the specified principal, it will be updated 
  - body: { access: string, packId: integer, principal: object }
- `POST https://api.mcp.ai/api/coda/add/custom/domain` — Add a custom domain to a published doc. This action allows you to map a custom domain (like 'docs.yourcompany.com') to a published Coda doc. Before using this action: 1. The doc must be published (use
  - body: { docId: string, customDocDomain: string }
- `POST https://api.mcp.ai/api/coda/add/permission` — Adds a new permission to the doc.
  - body: { docId: string, access: string, principal: object, suppressEmail?: boolean }
- `POST https://api.mcp.ai/api/coda/begin/content/export` — Initiate an asynchronous export of page content in HTML or Markdown format. This action starts a content export job and returns immediately with a request ID and status URL. The export is processed as
  - body: { docId: string, outputFormat: string, pageIdOrName: string }
- `POST https://api.mcp.ai/api/coda/content/export/status` — Check the status of a page content export operation. Use this to poll the export status and retrieve the download link when the export completes.
  - body: { docId: string, requestId: string, pageIdOrName: string }
- `POST https://api.mcp.ai/api/coda/copy/doc` — Creates a copy of an existing Coda document. This action allows you to duplicate a document while optionally specifying a new title and location for the copied document.
  - body: { title?: string, timezone?: string, folder_id?: string, source_doc_id: string }
- `POST https://api.mcp.ai/api/coda/create/a/new/pack/release` — Creates a new Pack release based on an existing Pack version.
  - body: { packId: integer, packVersion: string, releaseNotes?: string }
- `POST https://api.mcp.ai/api/coda/create/a/page` — Create a new page in a doc. Note that creating a page requires you to be a Doc Maker in the applicable workspace.
  - body: { name?: string, docId: string, iconName?: string, imageUrl?: string, subtitle?: string, pageContent?: object, parentPageId?: string }
- `POST https://api.mcp.ai/api/coda/create/doc` — Creates a new Coda doc, optionally copying an existing doc. Note that creating a doc requires you to be a Doc Maker in the applicable workspace (or be auto-promoted to one).
  - body: { title?: string, folderId?: string, timezone?: string, sourceDoc?: string, initialPage?: object }
- `POST https://api.mcp.ai/api/coda/create/folder` — Creates a new folder in a Coda workspace. Use this action to organize documents by creating folders within a workspace. Folders help structure content and make it easier to navigate and manage documen
  - body: { name: string, description?: string, workspaceId: string }
- `POST https://api.mcp.ai/api/coda/create/pack` — Creates a new Pack in Coda. A Pack is a container for custom functionality that extends Coda's capabilities. This endpoint registers a new Pack and returns its ID. After creation, you'll need to separ
  - body: { name: string, description?: string, workspaceId?: string, sourcePackId?: integer }
- `POST https://api.mcp.ai/api/coda/create/pack/invitation` — Create an invitation for a user to access a Pack. This action sends an invitation to the specified email address, granting them access to the Pack at the specified access level. The invitee will recei
  - body: { email: string, access: string, packId: integer }
- `POST https://api.mcp.ai/api/coda/delete/a/category/for/pack` — Delete a publishing category for a given pack.
  - body: { packId: integer, categoryName: string }
- `POST https://api.mcp.ai/api/coda/delete/a/maker/for/pack` — Removes a maker from a Pack's maker list. The maker will no longer be displayed as a contributor on the Pack's public page. This action requires admin access to the Pack. The operation returns success
  - body: { packId: integer, loginId: string }
- `POST https://api.mcp.ai/api/coda/delete/a/page` — Deletes the specified page.
  - body: { docId: string, pageIdOrName: string }
- `POST https://api.mcp.ai/api/coda/delete/a/permission/for/pack` — Delete user, workspace, or global permissions for a given Pack.
  - body: { packId: integer, permissionId: string }
- `POST https://api.mcp.ai/api/coda/delete/doc` — Permanently deletes a Coda doc. This action permanently removes the specified doc and all its contents including pages, tables, formulas, and data. The deletion is processed asynchronously and returns
  - body: { docId: string }
- `POST https://api.mcp.ai/api/coda/delete/folder` — Tool to delete a folder in Coda. Use when you need to permanently remove a folder. This operation deletes the specified folder.
  - body: { folder_id: string }
- `POST https://api.mcp.ai/api/coda/delete/multiple/rows` — Deletes multiple rows from a Coda table or view. This action queues the specified rows for deletion and returns immediately with a 202 status. The actual deletion is processed asynchronously and typic
  - body: { docId: string, rowIds: string[], tableIdOrName: string }
- `POST https://api.mcp.ai/api/coda/delete/pack` — Delete a given Pack.
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/delete/pack/listing/draft` — Delete the listing draft for a Pack, discarding any unsaved changes. Tool to delete the listing draft for a Pack, discarding any unsaved changes. Use when you need to discard a draft listing for a Pac
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/delete/page/content` — Tool to delete content from a Coda page. Use when you need to remove specific elements or all content from a page. This endpoint returns a 202 status code indicating the deletion has been queued and w
  - body: { doc_id: string, element_ids?: string[], page_id_or_name: string }
- `POST https://api.mcp.ai/api/coda/delete/permission` — Deletes an existing permission from a Coda document. This action permanently removes access for a specific user, group, or domain that was previously granted to the document. To use this action, you m
  - body: { docId: string, permissionId: string }
- `POST https://api.mcp.ai/api/coda/delete/row` — Deletes the specified row from the table or view. This endpoint will always return a 202, so long as the row exists and is accessible (and the update is structurally valid). Row deletions are generall
  - body: { docId: string, rowIdOrName: string, tableIdOrName: string }
- `POST https://api.mcp.ai/api/coda/deletes/a/custom/domain` — Deletes a custom domain from a published doc.
  - body: { docId: string, customDocDomain: string }
- `POST https://api.mcp.ai/api/coda/fetch/grouped/logs/by/pack/org/root/ingestion/id` — Retrieve the grouped logs of a Pack ingestion for debugging purposes. This action is used with Coda Brain (Enterprise feature) to retrieve and debug logs from Pack ingestion processes. It provides det
  - body: { q?: string, limit?: integer, order?: string, packId: integer, pageToken?: string, afterTimestamp?: string, organizationId: string, beforeTimestamp?: string, rootIngestionId: string, ingestionExecutionId?: string }
- `POST https://api.mcp.ai/api/coda/fetch/ingestion/executions/for/pack` — Retrieve the ingestion execution ids of a root ingestion for debugging purpose. This action is typically used with Coda Brain (Enterprise feature) to track and debug data ingestion processes from exte
  - body: { limit?: integer, order?: string, packId: integer, pageToken?: string, datasource?: string, executionType?: string, afterTimestamp?: string, csbIngestionId?: string, organizationId: string, beforeTimestamp?: string, ingestionStatus?: string, rootIngestionId: string, csbIngestionExecutionId?: string, includeDeletedIngestions?: boolean }
- `POST https://api.mcp.ai/api/coda/get/a/column` — Returns detailed information about a specific column in a Coda table. Retrieves column metadata including: - Column ID, name, type, and href - Format details (type, isArray, label, action, displayType
  - body: { docId: string, tableIdOrName: string, columnIdOrName: string }
- `POST https://api.mcp.ai/api/coda/get/a/control` — Returns info on a control.
  - body: { docId: string, controlIdOrName: string }
- `POST https://api.mcp.ai/api/coda/get/a/formula` — Returns info on a formula.
  - body: { docId: string, formulaIdOrName: string }
- `POST https://api.mcp.ai/api/coda/get/a/page` — Returns details about a page.
  - body: { docId: string, pageIdOrName: string }
- `POST https://api.mcp.ai/api/coda/get/a/row` — Retrieves detailed information about a specific row in a Coda table, including all cell values, metadata (creation/update timestamps), and parent table information. Use this action when you need to re
  - body: { docId: string, rowIdOrName: string, valueFormat?: string, tableIdOrName: string, useColumnNames?: boolean }
- `POST https://api.mcp.ai/api/coda/get/a/single/pack` — Retrieves detailed information about a specific Coda Pack by its ID. Returns pack metadata including name, description, workspace, logo URL, categories, rate limits, and configuration settings. Only a
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/get/a/table` — Returns details about a specific table or view.
  - body: { docId: string, tableIdOrName: string, useUpdatedTableLayouts?: boolean }
- `POST https://api.mcp.ai/api/coda/get/acl/settings` — Returns settings associated with ACLs for this Coda doc.
  - body: { docId: string }
- `POST https://api.mcp.ai/api/coda/get/analytics/last/updated/day` — Returns days based on Pacific Standard Time when analytics were last updated.
- `POST https://api.mcp.ai/api/coda/get/detailed/listing/information/for/a/pack` — Get comprehensive public listing information for a Coda Pack. Returns detailed metadata about a Pack including its description, logo, categories, makers, pricing, version information, and user access 
  - body: { docId?: string, packId: integer, workspaceId?: string, installContext?: string, releaseChannel?: string }
- `POST https://api.mcp.ai/api/coda/get/doc/analytics/summary` — Returns aggregated analytics summary data across documents, including session counts, installs, copies, reads, and conversions. Can be filtered by publication status, date range, and workspace.
  - body: { sinceDate?: string, untilDate?: string, isPublished?: boolean, workspaceId?: string }
- `POST https://api.mcp.ai/api/coda/get/doc/categories` — Retrieves the list of all available doc categories in Coda. These categories can be used when publishing docs to help users discover content.
- `POST https://api.mcp.ai/api/coda/get/folder` — Tool to get metadata about a Coda folder. Use when you need to retrieve information about a specific folder including its name, description, icon, workspace, and editing permissions.
  - body: { folderId: string }
- `POST https://api.mcp.ai/api/coda/get/info/about/a/doc` — Retrieves comprehensive metadata for a specific Coda document. This action returns detailed information about a document including its name, owner, creation/update timestamps, workspace and folder loc
  - body: { docId: string }
- `POST https://api.mcp.ai/api/coda/get/mutation/status` — Checks whether an asynchronous mutation operation has been applied to a Coda document. When you perform mutations like inserting/updating rows, deleting rows, or pushing buttons, the Coda API returns 
  - body: { requestId: string }
- `POST https://api.mcp.ai/api/coda/get/pack/analytics/summary` — Returns summarized analytics data for Packs the user can edit. This endpoint provides aggregate statistics including: - Total Pack invocations across all accessible Packs - Total document installation
  - body: { packIds?: integer[], sinceDate?: string, untilDate?: string, isPublished?: boolean, workspaceId?: string }
- `POST https://api.mcp.ai/api/coda/get/sharing/metadata` — Returns metadata associated with sharing for this Coda doc.
  - body: { docId: string }
- `POST https://api.mcp.ai/api/coda/get/the/difference/between/two/pack/versions` — Gets information about the difference between the specified previous version and next version of a Pack. This endpoint compares two semantic versions of a Pack and returns the differences. Both versio
  - body: { packId: integer, basePackVersion: string, targetPackVersion: string }
- `POST https://api.mcp.ai/api/coda/get/the/next/valid/version/for/a/pack` — Get the next valid version number for a Pack based on the proposed metadata. This endpoint validates the proposed Pack metadata and determines what the next semantic version number should be. It retur
  - body: { packId: integer, sdkVersion?: string, proposedMetadata: string }
- `POST https://api.mcp.ai/api/coda/get/the/source/code/for/a/pack/version` — Retrieves temporary download URLs for the source code files of a specific Pack version. Returns pre-signed, time-limited URLs to download the original TypeScript/JavaScript source code. Useful for rev
  - body: { packId: integer, packVersion: string }
- `POST https://api.mcp.ai/api/coda/get/user/info` — Returns basic info about the current user.
- `POST https://api.mcp.ai/api/coda/gets/custom/doc/domains/providers` — Identifies the domain registrar/provider for a given domain name by performing a DNS lookup. Returns the provider name (e.g., GoDaddy, Namecheap) or 'Other' if unidentified. Useful for determining whe
  - body: { customDocDomain: string }
- `POST https://api.mcp.ai/api/coda/gets/the/json/schema/for/pack/configuration` — Retrieves the JSON Schema that defines the configuration options available for a specific Coda Pack. This schema describes how the Pack can be customized, including connection settings, OAuth scopes, 
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/list/available/docs` — Returns a list of Coda docs accessible by the user, and which they have opened at least once. These are returned in the same order as on the docs page: reverse chronological by the latest event releva
  - body: { limit?: integer, query?: string, isOwner?: boolean, folderId?: string, inGallery?: boolean, isStarred?: boolean, pageToken?: string, sourceDoc?: string, isPublished?: boolean, workspaceId?: string }
- `POST https://api.mcp.ai/api/coda/list/categories/for/pack` — List all publishing categories associated with a specific Coda Pack. Categories help users discover packs by organizing them into topics like 'Project Management', 'Marketing', 'Engineering', etc.
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/list/columns` — Returns a list of columns in a table.
  - body: { docId: string, limit?: integer, pageToken?: string, visibleOnly?: boolean, tableIdOrName: string }
- `POST https://api.mcp.ai/api/coda/list/controls` — Returns a list of controls in a Coda doc.
  - body: { docId: string, limit?: integer, sortBy?: string, pageToken?: string }
- `POST https://api.mcp.ai/api/coda/list/custom/doc/domains` — List all custom domains configured for a published Coda doc. Custom domains allow you to publish your doc at your own domain (e.g., www.example.com) instead of the default Coda.io URL. Returns an empt
  - body: { docId: string }
- `POST https://api.mcp.ai/api/coda/list/doc/analytics` — Returns analytics data for accessible documents. Provides detailed metrics including views, sessions (desktop/mobile/other), copies, likes, and AI credits usage. Supports filtering by workspace, date 
  - body: { limit?: integer, query?: string, scale?: string, docIds?: string[], orderBy?: string, direction?: string, pageToken?: string, sinceDate?: string, untilDate?: string, isPublished?: boolean, workspaceId?: string }
- `POST https://api.mcp.ai/api/coda/list/featured/docs/for/a/pack` — Returns a list of featured docs for a Pack. Featured docs are example or template documents that showcase how to use the Pack. Each entry includes the document reference (id, type, href, browserLink),
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/list/folders` — Tool to list folders accessible by the user. Returns a list of folders with their metadata including ID, name, workspace, and icon. Use when you need to discover available folders or find a specific f
  - body: { limit?: integer, is_starred?: boolean, page_token?: string, workspace_id?: string }
- `POST https://api.mcp.ai/api/coda/list/formulas` — Returns a list of named formulas in a Coda doc.
  - body: { docId: string, limit?: integer, sortBy?: string, pageToken?: string }
- `POST https://api.mcp.ai/api/coda/list/makers/for/pack` — List makers for a given pack.
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/list/pack/analytics` — Returns analytics data for Packs the user can edit. This endpoint retrieves analytics information for Packs where the authenticated user has edit permissions. Analytics include installation counts, in
  - body: { limit?: integer, query?: string, scale?: string, orderBy?: string, packIds?: integer[], direction?: string, pageToken?: string, sinceDate?: string, untilDate?: string, isPublished?: boolean, workspaceId?: string }
- `POST https://api.mcp.ai/api/coda/list/pack/formula/analytics` — Returns analytics data for Pack formulas.
  - body: { limit?: integer, scale?: string, packId: integer, orderBy?: string, direction?: string, pageToken?: string, sinceDate?: string, untilDate?: string, packFormulaNames?: string[], packFormulaTypes?: string[] }
- `POST https://api.mcp.ai/api/coda/list/packs` — Get the list of accessible Packs.
  - body: { limit?: integer, sortBy?: string, direction?: string, pageToken?: string, accessType?: string, accessTypes?: string[], onlyWorkspaceId?: string, excludePublicPacks?: boolean, parentWorkspaceIds?: string[], excludeWorkspaceAcls?: boolean, excludeIndividualAcls?: boolean, includeBrainOnlyPacks?: boolean }
- `POST https://api.mcp.ai/api/coda/list/page/analytics` — Returns page-level analytics data for pages within a document. Shows metrics like views and sessions per page over time. **Important:** This endpoint requires the document to be in an Enterprise works
  - body: { docId: string, limit?: integer, pageToken?: string, sinceDate?: string, untilDate?: string }
- `POST https://api.mcp.ai/api/coda/list/page/content` — Tool to list page content. Returns the content of the specified page. Use when you need to retrieve the content elements from a Coda page.
  - body: { limit?: integer, doc_id: string, page_token?: string, content_format?: string, page_id_or_name: string }
- `POST https://api.mcp.ai/api/coda/list/pages` — Returns a list of pages in a Coda doc.
  - body: { docId: string, limit?: integer, pageToken?: string }
- `POST https://api.mcp.ai/api/coda/list/permissions` — Returns a list of permissions for this Coda doc.
  - body: { docId: string, limit?: integer, pageToken?: string }
- `POST https://api.mcp.ai/api/coda/list/permissions/for/a/pack` — Get user, workspace, and/or global permissions for a given Pack.
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/list/table/rows` — Retrieves rows from a specific table within a Coda document. This endpoint allows you to fetch data from your Coda tables programmatically, enabling integration with other systems or data analysis too
  - body: { docId: string, limit?: integer, query?: string, sortBy?: string, pageToken?: string, syncToken?: string, valueFormat?: string, visibleOnly?: boolean, tableIdOrName: string, useColumnNames?: boolean }
- `POST https://api.mcp.ai/api/coda/list/tables` — Returns a list of tables in a Coda doc.
  - body: { docId: string, limit?: integer, sortBy?: string, pageToken?: string, tableTypes?: string[] }
- `POST https://api.mcp.ai/api/coda/list/the/pack/listings/accessible/to/a/user` — Get listings of public Packs and Packs created by you.
  - body: { limit?: integer, sortBy?: string, orderBy?: string, packIds?: integer[], direction?: string, pageToken?: string, installContext?: string, onlyWorkspaceId?: string, packAccessTypes?: string[], excludePublicPacks?: boolean, parentWorkspaceIds?: string[], excludeWorkspaceAcls?: boolean, excludeIndividualAcls?: boolean, includeBrainOnlyPacks?: boolean }
- `POST https://api.mcp.ai/api/coda/list/the/releases/for/a/pack` — Get the list of releases of a Pack.
  - body: { limit?: integer, packId: integer, pageToken?: string }
- `POST https://api.mcp.ai/api/coda/list/the/versions/for/a/pack` — Get the list of versions of a Pack.
  - body: { limit?: integer, packId: integer, pageToken?: string }
- `POST https://api.mcp.ai/api/coda/list/user/pack/invitations` — Tool to get pending Pack invitations for the authenticated user. Use when you need to retrieve invitations to collaborate on Packs.
  - body: { limit?: integer, pageToken?: string }
- `POST https://api.mcp.ai/api/coda/list/workspace/roles` — Returns a list of the counts of users over time by role for the workspace. Note: This endpoint requires a workspace that belongs to an organization (Enterprise feature). Workspaces not belonging to an
  - body: { workspaceId: string }
- `POST https://api.mcp.ai/api/coda/list/workspace/users` — Returns a list of members in the given workspace. This list will be ordered with the requesting user first and then ordered by role. Note: This endpoint requires a workspace that belongs to an organiz
  - body: { pageToken?: string, workspaceId: string, includedRoles?: string[] }
- `POST https://api.mcp.ai/api/coda/pack/asset/upload/complete` — Notify Coda that the Pack asset upload to S3 is complete. This action is the final step in the Pack asset upload workflow: 1. Call upload_a_pack_asset to get a signed S3 URL and packAssetUploadedPathN
  - body: { packId: integer, packAssetId: string, packAssetType: string }
- `POST https://api.mcp.ai/api/coda/pack/source/code/upload/complete` — Notify Coda that the Pack source code upload to S3 is complete. This action is the final step in the Pack source code upload workflow: 1. Call upload_pack_source_code to get a signed S3 URL 2. Upload 
  - body: { packId: integer, codeHash: string, filename: string, packVersion: string }
- `POST https://api.mcp.ai/api/coda/pack/version/upload/complete` — Mark a Pack version upload as complete to finalize the Pack version creation. This action is part of a multi-step workflow for creating Pack versions: 1. First, register a new Pack version using the '
  - body: { notes?: string, packId: integer, source?: string, packVersion: string, allowOlderSdkVersion?: boolean }
- `POST https://api.mcp.ai/api/coda/patch/the/system/connection/credentials/of/the/pack` — Patch the system connection credentials of the Pack.
  - body: { packId: integer, credentials?: object }
- `POST https://api.mcp.ai/api/coda/publish/doc` — Update publish settings for a doc.
  - body: { mode?: string, slug?: string, docId: string, earnCredit?: boolean, discoverable?: boolean, categoryNames?: string[] }
- `POST https://api.mcp.ai/api/coda/push/a/button` — Pushes a button on a row in a table. Authorization note: This action is available to API tokens that are authorized to write to the table. However, the underlying button can perform any action on the 
  - body: { docId: string, rowIdOrName: string, tableIdOrName: string, columnIdOrName: string }
- `POST https://api.mcp.ai/api/coda/register/pack/version` — Registers a new Pack version and obtains a signed upload URL. This is the first step in the Pack version upload workflow. It registers a new version with Coda and returns a pre-signed S3 URL along wit
  - body: { packId: integer, bundleHash: string, packVersion: string }
- `POST https://api.mcp.ai/api/coda/resolve/browser/link` — Given a browser link to a Coda object, attempts to find it and return metadata that can be used to get more info on it. Returns a 400 if the URL does not appear to be a Coda URL or a 404 if the resour
  - body: { url: string, degradeGracefully?: boolean }
- `POST https://api.mcp.ai/api/coda/retrieve/the/grouped/logs/of/a/pack` — Retrieve grouped execution logs for a Pack in a specific Coda document. This endpoint returns Pack invocation logs grouped by execution, showing timestamps, status (success/failed), and detailed log e
  - body: { q?: string, docId: string, limit?: integer, order?: string, packId: integer, pageToken?: string, afterTimestamp?: string, beforeTimestamp?: string }
- `POST https://api.mcp.ai/api/coda/retrieve/the/information/for/a/specific/log` — Retrieve detailed information for a specific log entry from a Pack ingestion. This action retrieves comprehensive log details for Coda Brain (Enterprise feature) ingestion debugging. It provides in-de
  - body: { logId: string, packId: integer, detailsKey: string, organizationId: string, rootIngestionId: string }
- `POST https://api.mcp.ai/api/coda/retrieve/the/logs/of/a/ingestion` — Retrieve the logs of a Ingestion for debugging purpose. This action is typically used with Coda Brain (Enterprise feature) to track and debug data ingestion processes from external sources via Packs. 
  - body: { q?: string, limit?: integer, order?: string, packId: integer, logTypes?: string[], pageToken?: string, requestIds?: string[], afterTimestamp?: string, organizationId: string, beforeTimestamp?: string, rootIngestionId: string, ingestionExecutionId?: string }
- `POST https://api.mcp.ai/api/coda/retrieve/the/logs/of/a/pack` — Retrieve the execution logs of a Pack within a specific document for debugging purposes. Note: Logs are typically retained for approximately 2 weeks.
  - body: { q?: string, docId: string, limit?: integer, order?: string, packId: integer, logTypes?: string[], pageToken?: string, requestIds?: string[], afterTimestamp?: string, beforeTimestamp?: string }
- `POST https://api.mcp.ai/api/coda/retrieve/the/oauth/configuration/of/the/pack` — Retrieve the OAuth configuration of the Pack for display purpose. Secrets will be returned with masks.
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/retrieve/the/system/connection/metadata/of/the/pack` — Retrieve the system connection metadata of a Pack. This endpoint returns metadata about a Pack's system-level authentication configuration, where the Pack maker's credentials are used for all users. N
  - body: { packId: integer }
- `POST https://api.mcp.ai/api/coda/search/principals` — Search for users and groups (principals) that a Coda document can be shared with. This action searches across the workspace for principals matching the query term. The search is case-insensitive and m
  - body: { docId: string, query?: string }
- `POST https://api.mcp.ai/api/coda/set/the/oauth/configurations/of/the/pack` — Set OAuth2 client credentials (client ID, secret, redirect URI) for a Pack. Prerequisites: The Pack must have OAuth2 authentication defined in its source code using setUserAuthentication() with author
  - body: { packId: integer, clientId?: string, redirectUri?: string, clientSecret?: string }
- `POST https://api.mcp.ai/api/coda/set/the/system/connection/credentials/of/the/pack` — Set the system connection credentials of the Pack. This endpoint completely replaces the existing system connection credentials for a Pack. System connection credentials are used when a Pack is config
  - body: { packId: integer, credentials: object }
- `POST https://api.mcp.ai/api/coda/trigger/automation` — Triggers a webhook-invoked automation in a Coda doc. This action triggers an automation that has been configured with "Webhook invoked" as its trigger type. When triggered, the automation will execute
  - body: { docId: string, ruleId: string, payload?: object }
- `POST https://api.mcp.ai/api/coda/unpublish/doc` — Unpublishes a Coda document, removing it from public access. This action removes the document from the Coda Gallery and makes it private to the workspace. The operation succeeds even if the document i
  - body: { docId: string }
- `POST https://api.mcp.ai/api/coda/update/a/page` — Update properties for a page. Note that updating a page title or icon requires you to be a Doc Maker in the applicable workspace.
  - body: { name?: string, docId: string, iconName?: string, imageUrl?: string, isHidden?: boolean, subtitle?: string, pageIdOrName: string, contentUpdate?: object }
- `POST https://api.mcp.ai/api/coda/update/acl/settings` — Update access control list (ACL) settings for a Coda document. This action allows you to control sharing and permission settings: - Whether editors can manage document permissions - Whether viewers ca
  - body: { docId: string, allowCopying?: boolean, allowViewersToRequestEditing?: boolean, allowEditorsToChangePermissions?: boolean }
- `POST https://api.mcp.ai/api/coda/update/an/existing/pack/release` — Update the release notes of an existing Pack release. Use this to modify the description and changelog information displayed to users who have installed or are considering installing your Pack.
  - body: { packId: integer, releaseNotes?: string, packReleaseId: integer }
- `POST https://api.mcp.ai/api/coda/update/doc` — Updates metadata for a Coda document, including its title and icon. This action allows you to modify: - Document title/name - Document icon Note: Updating a doc title requires you to be a Doc Maker in
  - body: { docId: string, title?: string, iconName?: string }
- `POST https://api.mcp.ai/api/coda/update/featured/docs/for/a/pack` — Create or replace the featured docs for a Pack. Featured docs are example or template documents that showcase how to use the Pack. This action replaces the entire list of featured docs (it does not ap
  - body: { items: object[], packId: integer }
- `POST https://api.mcp.ai/api/coda/update/folder` — Tool to update folder metadata in Coda. Use when you need to modify the name or description of an existing folder. Note that some folder types (like personal folders) cannot be edited.
  - body: { name?: string, folder_id: string, description?: string }
- `POST https://api.mcp.ai/api/coda/update/pack` — Update an existing Pack for non-versioned fields.
  - body: { name?: string, packId: integer, description?: string, logoAssetId?: string, coverAssetId?: string, supportEmail?: string, exampleImages?: object[], privacyPolicyUrl?: string, shortDescription?: string, termsOfServiceUrl?: string, sourceCodeVisibility?: string, overallRateLimit__intervalSeconds?: integer, overallRateLimit__operationsPerInterval?: integer, perConnectionRateLimit__intervalSeconds?: integer, perConnectionRateLimit__operationsPerInterval?: integer }
- `POST https://api.mcp.ai/api/coda/update/row` — DEPRECATED: Use CODA_UPSERT_ROWS instead. Tool to update an existing row in a Coda table. Use when you need to modify specific cell values in a row. This endpoint returns a 202 status code indicating 
  - body: { row: object, doc_id: string, row_id_or_name: string, disable_parsing?: boolean, table_id_or_name: string }
- `POST https://api.mcp.ai/api/coda/updates/a/custom/domain` — Updates properties of a document's custom domain.
  - body: { docId: string, customDocDomain: string }
- `POST https://api.mcp.ai/api/coda/updates/user/role` — Updates the workspace user role of a user that matches the parameters. Only succeeds if the requesting user has admin permissions in the workspace. **Requirements:** - The workspace must belong to an 
  - body: { email: string, newRole: string, workspaceId: string }
- `POST https://api.mcp.ai/api/coda/upload/a/pack/asset` — Request a signed s3 URL to upload your Pack asset.
  - body: { packId: integer, filename: string, mimeType: string, imageHash: string, packAssetType: string }
- `POST https://api.mcp.ai/api/coda/upload/pack/source/code` — Request a signed s3 URL to upload your Pack source code.
  - body: { packId: integer, filename: string, packVersion?: string, payloadHash: string }
- `POST https://api.mcp.ai/api/coda/upsert/rows` — This tool allows you to insert new rows into a Coda table or update existing ones based on specified key columns. This is particularly useful for synchronizing data or ensuring records are up-to-date 
  - body: { rows: object[], doc_id: string, key_columns?: string[], row_id_or_name?: string, disable_parsing?: boolean, table_id_or_name: string }

## Example prompts
- "What can I do in Coda?"
- "Show me a summary of my Coda account"

## More
- Page: https://mcp.ai/coda
- Agent spec (llms.txt): https://mcp.ai/coda/llms.txt
- Postman collection: https://mcp.ai/coda/postman.json
