allow_locked_page_edits
ChatGPTRecords that this connection may edit locked pages. Call this only after the user agrees to edit a locked page. A later write in this connection then bypasses the lock. The lock stays on the page. This call does not grant edit access. Do not call this when the user declines. Retrying the original write does not record the agreement.
content_duplicate
ChatGPTDuplicate content from one location to another. Can copy pages and documents into both new or existing documents. Call tool_guide with "content" topic for usage patterns.
content_image_upload
ChatGPTUpload an image to fill a previously inserted image placeholder. Use after inserting an image block via content_modify. Two modes: (1) provide imageUrl to upload directly using an https:// URL, or (2) omit imageUrl and provide contentType to get an uploadUrl for local file upload via curl. Base64 data URLs are not supported. Call tool_guide with "content" topic for usage patterns.
content_modify
ChatGPTModify canvas content: insert, replace, or delete elements. Call tool_guide with "content" topic first for usage patterns.
content_read
ChatGPTRead body content of a page or cell canvas. Accepts a page URI (the default), a page-canvas URI, or a cell-canvas URI (returned as canvasUri by table_rows_read for canvas-typed cells). This reads one canvas: to learn which tables and views a document has, call schema_explain. For lookup columns that reference a table, call it with direction "dependents". Call tool_guide with "page" topic for content type and markdown options.
control_delete
ChatGPTDelete a control from the document. This permanently removes the control.
control_manage
ChatGPTCreate or update a canvas control (formula or button). Use action "create" to add a new control, or "update" to modify an existing one. Call tool_guide with "formula" topic for usage patterns.
control_read
ChatGPTRead a canvas control's full configuration by its formula or control coda:// URI — any control type, not just formulas and buttons. Returns type, current value, and the control's type-specific configuration under format (a button's label/actionFormula/color/disableIfFormula, a slider's minimum/maximum, a reaction's imageIcon); formula controls also carry formula/error. Obtain the URI from content_read (include "controls" or "formulas"), which returns the same fields for every control on a canvas — use this tool for a single control you already hold a URI for.
document_create
ChatGPTCreate a new Coda document. Call tool_guide with "document" topic first for usage patterns.
document_delete
ChatGPTPermanently delete a Coda document. This action cannot be undone.
document_manage
ChatGPTChange a document's access control (add, update, or revoke a permission) or move the document to a different folder. Requires share access; moving also requires edit access.
document_outline
ChatGPTOutline a document: document metadata (title, icon, createdAt, owner, sourceDoc) plus a paginated list of its pages with per-page metadata (title, pageType, isHidden, parentPageUri, position, icon, coverPhoto, subtitle, canvasUri, authors, createdAt/updatedAt/createdBy/updatedBy, child page outlines). Page metadata and hierarchy — not the data model (tables, columns, views), and not body content.
document_read
ChatGPTGet document structure: pages list and metadata (tables, formulas, controls, comments). Call tool_guide with "page" topic for content type options.
document_suggest_changes
ChatGPTPropose tracked suggest-changes on canvas line content (a page canvas or a canvas-typed table cell via its canvasUri): replace text in a single line, insert markdown lines, or change list style — including line text inside an existing callout. A reviewer accepts or rejects each suggestion; this does not apply a live edit. Suggested deletes stay visible until accepted, so a later content_read still shows the original text. Do NOT use this for live mutations, whole-block deletes, inserting a callout/code/image/divider, formulas, collapsible headings, text that spans multiple blocks, link labels, or nested values in a regular (non-canvas) table cell — those cannot become suggestions. Use content_modify for those live canvas edits, and table_rows_manage for regular table cells. Inline formatting: **bold**, *italic*, __underline__, and color/highlight via <color:Red>…</color>, <color:Red bg:Yellow>…</color>, or <color: bg:Yellow>…</color>. Call tool_guide with "content" topic first when targeting an element ID, or unsure which operation applies.
formula_execute
ChatGPTEvaluate a Coda Formula Language (CFL) expression and return the result. Requires a document URI — truncate longer URIs to 'coda://docs/{docId}'. Call tool_guide with "formula" topic first for usage patterns.
name_match
ChatGPTMatch approximate page, table, view, or person names to candidates in the document. Returns matched URIs / user profiles ranked by similarity. When multiple names need resolving, batch them into a single call (up to 20 lookups) rather than calling repeatedly. For the current user ("me"/"my"), use whoami instead — person lookups here are for other named people.
notifications_list
ChatGPTList the current user's notifications (mentions), newest first. Defaults to unread notifications.
notifications_mark_read
ChatGPTMark notifications read by the mention timestamps returned by notifications_list. Mark only the notifications the user selected.
page_create
ChatGPTCreate a new page. To copy existing pages or documents, use content_duplicate instead. Call tool_guide with "page" topic for options.
page_delete
ChatGPTDelete a page from a document. Set shouldDeleteChildren to delete child pages recursively.
page_describe
ChatGPTDescribe page metadata (title, pageType, isHidden, parentPageUri, position, icon, coverPhoto, subtitle, canvasUri, authors, createdAt, updatedAt, createdBy, updatedBy, child page outlines). Page URIs only — for body content call content_read with the page URI directly.
page_read
ChatGPTRead page content and metadata. Call tool_guide with "page" topic for content type options.
page_update
ChatGPTUpdate an existing page. Call tool_guide with "page" topic for options.
schema_explain
ChatGPTMap a document's data model — which tables, columns, views, formulas and controls exist and how they reference each other — as a graph of URIs. Pass a URI pattern as uri, then follow reference edges: a lookup column to the table it relates to, a view to the table it reads, a connected table to its source database. Use direction "dependents" for lookup columns that point at a matched table. Returns {uri, name, kind} per node; call table_columns_read on a table URI for column types and row counts, or content_read for a page's body. For one table's relations, table_columns_read already returns lookupTargets — use this tool when the question spans the document, needs lookup-only reverse traversal, or needs more than one hop.
search
ChatGPTSearch for content across documents, pages, tables, and rows. Returns ranked results with URLs.
table_columns_delete
ChatGPTDelete columns from a table. Call tool_guide with "table" topic for usage patterns.
table_columns_manage
ChatGPTAdd or update table columns (name, type, formula). For action "update": cannot change cell text formatting — use table_rows_manage with markdown (e.g. "bold") instead. Call tool_guide with "table" topic for column types.
table_columns_read
ChatGPTReturns column schema for a table: column names, IDs, isWritable flag, format.type, formula body (when present), and rowCount. Slim by default — per-variant format details (SelectList selectOptions, Scale iconSet/maximum, Lookup objectId, Currency code, Reaction imageIcon, DatePicker format, etc.) and views are omitted. Pass include: ['formats'] to get full format details, ['views'] to inspect view configs. WHEN TO CALL: before writing rows, OR configuring a view with sorts/groups/columnOrder/hideColumnIds/sharedFilter that reference columns. For reading rows, running formulas, or listing existing views, skip this — call table_rows_read or formula_execute directly with the tableUri. USING THE OUTPUT: before each write, check column.isWritable (skip formula columns and Reaction columns) and column.format.type. Lookup columns (without formula) need rowIds from the target table (format.objectId), never display text. SelectList columns need values matching format.selectOptions exactly (case-sensitive). Pass columnsToInclude on subsequent table_rows_read calls to avoid fetching unused columns.
table_create
ChatGPTCreate a new table with columns and optional data. Call tool_guide with "table" topic for column types.
table_delete
ChatGPTDelete an entire table from a document. This permanently removes the table and all its data.
table_rows_delete
ChatGPTDelete rows from a table. Call tool_guide with "table" topic for usage patterns.
table_rows_manage
ChatGPTAdd or update table rows. Use action "add" to insert new rows, or "update" to modify existing rows. Supports markdown formatting in cell values (e.g. "bold"). Call tool_guide with "table" topic for usage patterns.
table_rows_read
ChatGPTRead row data from a table with cell values. Pass table uri directly.
table_view_delete
ChatGPTDelete a table's view.
table_view_manage
ChatGPTAdd a new view to a table (action "add") or configure an existing view (action "configure"). Supports: name, filter, personal filter, layout, sorts, column visibility, column order, grouping, and conditional formatting. Call tool_guide with "table" topic for usage patterns.
tool_guide
ChatGPTGet detailed guidance before working in specific areas. Call with the relevant topic before performing operations.
url_convert
ChatGPTConvert between coda:// resource URIs and Coda web URLs. Use action "encode" for coda:// → https, "decode" for https → coda:// (returns uri for table/page tools and docUri for formula_execute and search). After decode, pass uri to table/page tools, docUri to formula_execute. No need to call document_read or tool_guide first.
whoami
ChatGPTGet the current authenticated user information (ID, name, email).