Skip to content

Tools and endpoints

List of current MCP endpoints and supported tools
Last edited 6 days ago by Bharat Batra.

Once connected, your AI assistant can read and write content across your Coda docs by using the many tools the MCP offers. Here are a few tips for working with MCP tools:


📝 Most useful prompts chain a few tools together.
You might search for a doc, read its tables, add some rows, then add a page with a summary of your work and references to the original page.

👉 Knowing what each tool does helps you ask for the right things.
You can see the Key parameters column below to understand how a tool might be used and what kind of context can help make it more accurate.
For example, the page_read tool provides access to comments on a page, which is very useful when responding to feedback on a writeup.

⚠️ Tool names and parameters are subject to change and should not be used directly in Code
Especially while the MCP is in beta, we expect to make changes to make our tools more ergonomic for AI assistants. This may mean that tools can get renamed, removed, or added.
If you are building your own agents, it is advised against using tool names directly, as your agent may stop working if a breaking change is made to this toolset. Instead, let your agent dynamically read the tool description using listTools and call tools by dynamically constructing tool calls with callTools

Available Tools

Search
Object Type
Tool Name
Description
Example Use Cases
Key Parameters
Full Description
4

search

Search for content across documents, pages, tables, and rows. Returns ranked results with URLs.
• Find content across all accessible docs
• Search within a specific document
• Filter results to pages only or table rows only
• Filter by document owner
• Discover relevant information quickly
• Locate docs by keyword
• query (required)
• docUri (filter to specific doc)
• types (page, tableRow)
• limit (1-20, default 10)
• ownerUserId (filter by doc owner)
Open

url_convert

Convert between coda:// resource URIs and Coda web URLs. Use action "encode" for coda:// → https, or "decode" for https → coda:// (returns {uri, docUri}). On decode, pass scope to pin the depth of the returned URI.
• Parse user-shared Coda links to get resource URIs
• Convert browser URLs to coda:// URIs for use with all other tools
• Convert coda:// URIs back to shareable web URLs
• Extract both resource-level and document-level URIs in one call
• action: "encode" or "decode" (required)
• url (web URL, for decode)
• uri (coda:// URI, for encode)
• scope (decode only: "page" | "table" | "view" | "document" | "auto" — controls the depth of the returned uri to match the next tool you'll call; if scope is deeper than the URL contains, uri is null)
• Returns: { uri (most specific resource), docUri (document scope) } for decode, or { webUrl } for encode
Open

whoami

Get the current authenticated user information (ID, name, email).
• Ask about tasks belonging to you or pages authored by you
• Verify which Coda account is authenticated
• Get userId for search's ownerUserId filter
None (no parameters required)
Open

tool_guide

Get detailed guidance before working in specific areas. Accepts a single topic, or a batch of topics with optional subTopics for in-depth references (formula functions, reaction icons, personal filter formats, etc.).
• Learn CFL formula syntax before writing formulas
• Understand content_modify operations before editing pages
• Review comment_manage actions before working with comments
• Check table column types before creating or modifying tables
• Get document creation best practices
• topic (required): "comment", "content", "document", "formula", "navigation", "page", "table" — plus "getting_started" as an entry-point topic
• subTopics (optional): a single sub-topic string OR an array (up to 10) of sub-topics (e.g. for "formula": Actions, Collections, Dates, Duration, Filters, Info, Lists, Logical, Math, Misc, Object, People, Relational, RichText, Shape, Spatial, String; for "table": reaction-icons, PersonalFilter)
• topic may also be passed as { topic, subTopics } objects or an array of mixed strings/objects to batch multiple lookups in one call
Open
3

document_create

Create a new Coda document. Call tool_guide with "document" topic first for usage patterns.
• Start a new project from scratch
• Organize docs into specific workspaces and folders
• Set up a blank doc before adding pages and tables
• title (required)
• destination.workspaceId
• destination.folderId
Open

document_read

Get document structure: pages list and metadata (tables, formulas, controls, comments). Call tool_guide with "page" topic for content type options.
• Explore doc structure before making changes
• Discover all tables/formulas across pages
• Audit comments across a document
• Check document organization before reading specific pages
• uri (coda://docs/{docId})
• contentTypesToInclude (tables, formulas, controls, comments)
• pageLimit (1-50, default 25)
• pageOffset
Open

document_delete

Permanently delete a Coda document. This action cannot be undone.
• Clean up test documents
• Remove deprecated or archived docs permanently
• uri (coda://docs/{docId})
Open
4

page_create

Create a new page. To copy existing pages or documents, use content_duplicate instead. Call tool_guide with "page" topic for options.
• Create nested wiki structures with parent/child pages
• Set up polished pages with icons and cover photos
• Build branded templates with consistent styling
• Control metadata display (author, timestamps)
• uri (document URI for top-level, page URI for nested)
• title (required)
• icon
• subtitle
• coverPhoto (url, width, height)
• position
• showLastEdited, showAuthor, showIcon, showCoverPhoto, showSubtitle
Open

page_read

Read page content and metadata. Call tool_guide with "page" topic for content type options.
• Read page content as markdown for AI analysis
• Get element IDs (with annotations) for precise content editing
• Review all comments on a page
• Discover tables and get their URIs for data operations
• Search for specific text within a page
• Paginate through long pages
• uri (page or canvas URI)
• contentTypesToInclude (markdown, tables, formulas, controls, comments)
• markdownBlockLimit (default 100)
• markdownBlockOffset
• markdownIncludeAnnotations (adds [[elementId]] for editing)
• markdownSearchTerms (filter blocks by text)
Open

page_update

Update an existing page. Call tool_guide with "page" topic for options.
• Polish docs with beautiful cover photos and icons
• Reorganize page hierarchy by changing parents
• Reorder pages with position
• Toggle metadata visibility for cleaner presentations
• uri (page URI)
• updateFields.title
• updateFields.subtitle
• updateFields.icon
• updateFields.coverPhoto (url, width, height)
• updateFields.parentPageUri (null for top-level)
• updateFields.position
• updateFields.showLastEdited, showAuthor, showCoverPhoto, showIcon, showSubtitle
Open

page_delete

Delete a page from a document. Set shouldDeleteChildren to delete child pages recursively.
• Remove a single outdated page
• Delete an entire section including all nested sub-pages
• Clean up page hierarchies
• uri (page URI)
• shouldDeleteChildren (recursive delete)
Open
10

table_create

Create a new table on a page with specified columns and optional initial data. Supports various column types, formulas, and positioning. Call tool_guide with "table" topic for column types.
• Build task trackers with checkboxes and dates
• Create CRM tables with person and email columns
• Set up project timelines with date columns
• Create rating systems with scale columns
• Pre-populate with initial data
• Control table placement on the page
• uri (page or canvas URI)
• name (table name)
• columns[] (name, format, formula, isDisplayColumn, description; max 20)
• columns[].format types: text (none), checkbox (check), email, link, person, select list (sl, with optional {name,color} options), lookup, number (num), percentage (per), currency (curr), date (dp), time, datetime (dt), scale, slider (with displayType Slider/Progress), reaction, canvas
• rows[] (initial rows; exclude formula and reaction columns)
• viewLayout (initial layout: "default grid", "card", "calendar")
• insertPosition (element ID or "page_start")
Open

table_delete

Delete an entire table from a document. This permanently removes the table and all its data.
• Remove deprecated tables
• Clean up document structure
• Delete temporary data tables
• uri (table or view URI)
Open

table_rows_read

Read row data from a table with cell values. Pass table uri directly.
• Fetch specific rows by ID for targeted updates
• Filter rows with CFL formulas (e.g., status = "Active")
• Select only specific columns to reduce payload
• Paginate through large tables
• Get row IDs required for update/delete operations
• Include row-level comments
• uri (table or view URI)
• filterFormula (CFL expression for server-side row filtering)
• columnsToInclude (column IDs to project — does NOT filter rows; for filtering use filterFormula)
• rowLimit (default 50, max 100)
• rowOffset (pagination)
• rowNumbersOrIds (read specific rows)
• includeComments (default false)
Open

table_rows_manage

Add 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.
• Bulk import data from external sources
• Add multiple records in a single API call
• Batch update task statuses
• Modify multiple records efficiently
• Sync external data into Coda
• Insert rows with markdown-formatted text content
• uri (table or view URI)
• data.action ("add" or "update")
• For add: data.columns (column IDs), data.rows (value arrays, max 100)
• For update: data.rows[].rowNumberOrId, data.rows[].updateCells[].columnId, data.rows[].updateCells[].value
• Exclude formula and reaction columns
Open

table_rows_delete

Delete rows from a table. Call tool_guide with "table" topic for usage patterns.
• Clean up completed tasks in bulk
• Remove archived entries
• Delete all rows to reset a table
• Efficiently delete up to 500 rows in one call
• uri (table or view URI)
• data.action ("delete_specific" or "delete_all")
• data.rowNumbersOrIds (for delete_specific, max 500)
Open

table_columns_manage

Add 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.
• Add calculated formula columns
• Extend schema with new field types
• Insert columns at specific positions
• Create lookup columns linking to other tables
• Rename columns for clarity
• Change column types (e.g., text to select list)
• Update formula expressions
• uri (table or view URI)
• data.action: "add" or "update"
• For add: columns[].name, columns[].format, columns[].formula, columns[].isDisplayColumn, columns[].description; position
• For update: columns[].columnId, columns[].updatedFields (name, format, formula, isDisplayColumn, description — null clears)
• Max 20 columns per request
• SelectList selectOptions accept {name, color} objects for colored pills; Slider format supports displayType: Slider | Progress with optional color
Open

table_columns_delete

Delete columns from a table. Call tool_guide with "table" topic for usage patterns.
• Remove deprecated fields
• Clean up unused columns
• Simplify table schema
• uri (table or view URI)
• columnIds (array of column IDs to delete)
Open

table_view_manage

Add a new view to a table (action "add") or configure an existing view (action "configure"). Supports name, layout (including charts), filters (shared and personal), sorts, groups, column visibility, column order, conditional formatting, and title visibility.
• Add a new view to a table
• Create a chart (bar, line, area, pie, scatter, or bubble) as a tab on the table
• Embed a chart on a different page via pageUri
• Switch an existing grid view to a chart layout (configure + viewLayout)
• Filter view to show specific rows (shared or per-user)
• Reorder columns or hide a subset
• Group rows by status, person, or category
• Apply conditional formatting to highlight rows or specific columns
• Rename the underlying table (configure the base view's name)
• Hide the table title on its canvas
• uri (table URI for add, view URI for configure) • data.action: “add” or “configure” • name (required for add) • viewLayout: “default grid”, “card”, “calendar”, “timeline”, “detail”, “form”, or chart layouts: “barChart”, “lineChart”, “areaChart”, “pieChart”, “scatterChart”, “bubbleChart” • chartOptions (only for chart layouts; per-type knobs silently no-op on layouts that don’t apply): • xColumnIds, yColumnIds — axis columns (omit to auto-pick from schema; Y aggregate auto-applied: Sum for numeric, Count otherwise) • zColumnIds — bubble chart only (size axis) • seriesColumnIds — segment-by; pie ignores • showLegend (boolean) — all chart types • barOrientation: “vertical” | “horizontal” — bar only • stacking: “none” | “normal” | “percent” — bar and area only • pieDisplayMode: “Pie” | “Donut” | “Semicircle” — pie only • showPoints: “Auto” | “On” | “Off” — line and area only • xAxisShowTitle, yAxisShowTitle (boolean) — charts with axes • xAxisMin, xAxisMax, yAxisMin, yAxisMax (number; null clears the bound) — charts with axes • xAxisScale, yAxisScale: “Linear” | “Logarithmic” — charts with axes • sharedFilter (CFL formula visible to all collaborators; null clears) • personalFilter (per-user interactive filter: array of {columnId, values}; null clears) • sorts[] (columnId + direction) • groups (left and/or top column IDs; [] clears) • columnVisibility.hideColumnIds (complete hidden set; [] shows all) • columnOrder (full ordered visible column ID list) • conditionalFormats[] (condition, formatStyles, scope; ruleId to update, formatStyles: null to delete) • titleHidden (hide/show the table title on the canvas) • pageUri (optional, only for add; embeds the view on another page — also used to embed a chart on a different page)
Open

table_view_delete

Delete a table's view.
• Remove unused or deprecated views
• Clean up view clutter
• uri (view URI: coda://docs/{docId}/tables/{tableId}/views/{viewId})
Open

table_columns_read

Read a table's column schema: column names, IDs, isWritable flag, format.type, formula bodies, and rowCount. Pass include: ['formats'] for full per-variant format details, or include: ['views'] for view configs.
• Get columnIds before writing rows or updating columns
• Look up SelectList selectOptions or Lookup objectId before writing values
• Inspect view filters (sharedFilter / personalFilterFormula) before scoping a query
• Verify isWritable to skip formula/reaction columns when writing
• Find the target table for a lookup column
• uri (table or view URI)
• include (array): "formats" for per-variant format details (selectOptions, iconSet, objectId, currency code, etc.); "views" for view configs (filterFormula, layout, sorts)
Returns: { columns[], views, rowCount, lookupTargets? }. Each column: { name, columnId, isWritable, format.type, formula?, description? }.
Open
6

content_modify

Modify canvas content: insert, replace, or delete elements. Call tool_guide with "content" topic first for usage patterns.
• Add formatted documentation with headers and lists
• Insert styled callouts for tips, warnings, alerts
• Add syntax-highlighted code blocks
• Replace text within specific elements or by text match
• Delete content by element ID or text match
• Insert image placeholders (then upload via content_image_upload)
• Build rich page layouts programmatically
• uri (page or canvas URI) • operations[] (up to 10 per request, atomic rollback if any fail): • insert_element — blockType: markdown, callout, codeblock, divider, image • replace_element_text (by elementId + oldText/newText) • replace_text (by oldText/newText, supports “all” flag, supports multi-line via \n) • delete_element (by elementId) • delete_element_by_text (by oldText, supports “all” flag and multi-line) • Callout fields: style (preset Info/Tip/Alert/Critical), icon (full Icons8 enum), color (8-color palette), dismissible • Codeblock language: 100+ enum including CodaFormulaLanguage, Solidity, WebAssembly, Splunk SPL • Divider style: Default, Thick, Dashed, Dotted, Wavy, Paragraph • Inline … tags inside markdown/callout content create live inline formula controls • insertPosition: element ID or “page_start” (omit = end of page)
Open

content_duplicate

Duplicate 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.
• Copy a page (with subpages) to another document
• Fork a document into a new standalone copy
• Merge a document's pages into an existing doc
• Create templates by duplicating master pages
• Clone page structure with or without row data
• copy.copyType ("copyPage" or "copyDocument")
• copy.sourceDocUri (required)
• copy.sourcePageUri (for copyPage)
• copy.destinationDocUri (omit to create new doc)
• copy.destinationParentPageUri
• copy.destinationWorkspaceId / destinationFolderId
• copy.includeTableRows (default false, always true for new docs)
• copy.newTitle
Open

content_image_upload

Upload 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.
• Add images to page content
• Upload screenshots or diagrams
• Embed external images by URL
• Upload local files via curl
• uri (document URI)
• blobId (from content_modify image placeholder)
• imageUrl (https:// URL, or omit for upload mode)
• contentType (MIME type, required when imageUrl is omitted)
• altText
Open

comment_add

Add a comment or reply to a page element, table row, or existing thread. Call tool_guide with "comment" topic for usage patterns.
• Add feedback on a specific page element
• Comment on a specific table row
• Reply to an existing comment thread
• Anchor a comment to specific text within an element
• uri (document URI) • data.action: add_to_page, add_to_row, add_reply • data.content (markdown) • data.pageUri + elementId (for page comments) • data.tableUri + rowId (for row comments) • data.threadUri (for replies) • data.text (optional, to anchor to specific text within an element)
Open

comment_delete

Permanently delete a comment reply or an entire comment thread.
• Remove a single reply from a thread
• Delete an entire comment thread and all its replies
• uri (document URI)
• data.action: delete_reply, delete_thread
• data.threadUri (required)
• data.commentUri (required for delete_reply)
Open

comment_resolve

Mark a comment thread as resolved, or reopen a resolved thread.
• Mark a feedback thread complete after addressing it
• Reopen a previously resolved thread for follow-up
• Clean up resolved discussions in long-running docs
• uri (document URI)
• data.action: resolve, reopen
• data.threadUri (required)
Open
3

formula_execute

Evaluate a Coda Formula Language (CFL) expression and return the result. Requires a document URI. Call tool_guide with "formula" topic first for usage patterns.
• Count rows matching a condition
• Calculate sums, averages, or aggregates from table data
• Compare values across groups
• Test formula expressions before creating formula controls
• Answer analytical questions about table data
• uri (document URI, coda://docs/{docId})
• formula (CFL expression, required)
Open

control_manage

Create or update a canvas control (formula or button). Use action "create" to add a new control, or "update" to modify an existing one. Formula controls support the full column-format vocabulary (currency, scale, slider, lookup, etc.). Call tool_guide with "formula" topic for usage.
• Display live KPI summaries on dashboards
• Calculate totals/averages from table data
• Create dynamic status indicators
• Build real-time metrics displays
• Format output as currency, percentage, dates
• Create action buttons that execute formulas
• Build interactive controls with disable conditions
• uri (canvas URI for create; formula/control URI for update)
• data.action: "create" or "update"
• For create: control.type ("formula" or "button"); for formula: control.formula (CFL) and control.format (full column-format set: canvas, check, curr, dp, dt, email, link, lookup, none, num, per, person, reaction, scale, sl, slider, time); for button: control.actionFormula, control.label, control.color, control.disableIfFormula
• control.name (optional, auto-generated if omitted)
• insertPosition (element ID or "page_start")
• For update: updatedFields { formula, name, format, label, actionFormula, color, disableIfFormula }
Open

control_delete

Delete a control from the document. This permanently removes the control.
• Remove unused dashboard formulas
• Clean up deprecated calculations
• Delete obsolete buttons
• uri (formula or control URI: coda://docs/{docId}/formulas/{formulaId} or coda://docs/{docId}/controls/{controlId})
Open

Learn more about Coda MCP

Guides to help you get started, build something real, and go further.
Not sure what MCP is or where to begin? Start here.
Follow along to build a real working doc using Coda's MCP.
Ready to do more? Explore intermediate use cases and workflows.

Get help with Coda MCP

Everything you need to connect, use, and stay secure.
Step-by-step instructions for connecting your AI client.
A reference for working with MCP day-to-day.
Best practices to keep your setup safe.


Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.