Coda
Collaborative workspace platform that transforms documents into powerful tools for team productivity and project management
Verdict
Common use cases
- Query roadmap tables during planning
- Export meeting notes as markdown
- Add rows to issue trackers from chat
- Copy doc templates for new projects
- Grant doc access to new hires
Integration
- Vendor
- Coda
- Category
- productivity
- Auth
- API_KEY
- Tools
- 50
- Composio slug
coda
Tools
- Add a category for pack
Add a publishing category for a given pack.
- Add a maker for pack
Set a maker for a given pack. used to display makers for a pack in the corresponding packs page.
- Add a permission for pack
Create or modify user, workspace, or global permissions for a given pack.
- Add custom domain
Add a custom domain to a published doc.
- Add permission
Adds a new permission to the doc.
- Begin content export
Initiate an export of content for the given page.
- Content export status
Check the status of a page content export
- Copy Document
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.
- Create a new pack release
Creates a new pack release based on an existing pack version.
- 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.
- 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).
- Create pack
Creates a new pack, essentially registering a new pack id. the contents of the pack will be uploaded separately.
- Delete a category for packdestructive
Delete a publishing category for a given pack.
- Delete a maker for packdestructive
Delete a maker for a given pack, who will not be displayed in the corresponding packs page.
- Delete a pagedestructive
Deletes the specified page.
- Delete a permission for packdestructive
Delete user, workspace, or global permissions for a given pack.
- Delete docdestructive
Deletes a doc.
- Delete multiple rowsdestructive
Deletes the specified rows from the table or view. this endpoint will always return a 202. row deletions are generally processed within several seconds.
- Delete packdestructive
Delete a given pack.
- Delete permissiondestructive
Deletes an existing permission.
- Delete rowdestructive
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 generally processed within several seconds. when
- Deletes a custom domain
Deletes a custom domain from a published doc.
- Fetch grouped logs by pack org root ingestion id
Retrieve the grouped logs of a pack for debugging purpose.
- Fetch ingestion executions for pack
Retrieve the ingestion execution ids of a root ingestion for debugging purpose.
- Get acl settings
Returns settings associated with acls for this coda doc.
- Get a column
Returns details about a column in a table.
- Get a control
Returns info on a control.
- Get a formula
Returns info on a formula.
- Get analytics last updated day
Returns days based on pacific standard time when analytics were last updated.
- Get a page
Returns details about a page.
- Get a row
Returns details about a row in a table.
- Get a single pack
Returns a single pack.
- Get a table
Returns details about a specific table or view.
- Get detailed listing information for a pack
Get detailed listing information for a pack.
- Get doc analytics summary
Returns summarized analytics data for available docs.
- Get doc categories
Gets all available doc categories.
- Get info about a doc
Returns metadata for the specified doc.
- Get mutation status
Get the status for an asynchronous mutation to know whether or not it has been completed. each api endpoint that mutates a document will return a request id that you can pass to this endpoint to check the completion status. status informati
- Get pack analytics summary
Returns summarized analytics data for packs the user can edit.
- Gets custom doc domains providers
Gets the provider (ie. godaddy) of a custom domain.
- Get sharing metadata
Returns metadata associated with sharing for this coda doc.
- Gets the json schema for pack configuration
Returns a json schema applicable for customizing the pack using pack configurations.
- Get the difference between two pack versions
Gets information about the difference between the specified previous version and next version of a pack.
- Get the next valid version for a pack
Get the next valid version based on the proposed metadata.
- Get the source code for a pack version
Get temporary links used to download the source code for the given packid and version
- Get user info
Returns basic info about the current user.
- 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 relevant to the user (last viewed, edited, or
- List categories for pack
List publishing categories for a given pack.
- List columns
Returns a list of columns in a table.
- List controls
Returns a list of controls in a coda doc.
Setup
Setup guide
- 11. In Switchy, open your workspace settings and navigate to the Integrations tab. 2. Find Coda in the MCP directory and click Connect. 3. You'll be prompted to paste a Coda API key — generate one at coda.io/account under API Settings. 4. Grant the key access to the specific docs or workspaces your team needs (Coda lets you scope keys per doc). 5. Paste the key into Switchy and click Authorize. 6. To test the connection, open any Project and type '@Coda list my docs' — you should see a list of accessible documents. 7. To invoke a tool, @mention Coda and describe the action (e.g. '@Coda add a row to the Sprint Backlog table with task: Review API docs'). 8. If a tool fails, check that your API key has write permissions for the target doc.
What teammates see: by default, memories from Coda are scoped to the Project (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.
Works well with
Top models
Compatibility data appears once enough Projects have used this MCP together with a given model.
How Switchy teams use it
Starter prompts
List Workspace Docs
@Coda list all documents in my workspace, including their titles and doc IDs.Open in a Project →
Add Tracker Row
@Coda add a row to the 'Bug Tracker' table in doc [doc-id] with columns: Title='Login timeout on mobile', Status='Open', Priority='High'.Open in a Project →
Export Page Content
@Coda begin a content export for page [page-id] in doc [doc-id] as markdown, then check the export status.Open in a Project →
Copy Project Template
@Coda copy document [doc-id] and title the new copy 'Q2 Product Launch'. Place it in the 'Active Projects' folder.Open in a Project →
Grant Doc Permission
@Coda add permission to doc [doc-id] for user email@example.com with access level 'write'.Open in a Project →
Example outputs
Illustrative - representative of the model's voice and quality, not literal recordings.
@Coda list all tables in the 'Q1 Planning' doc and show me the row count for each one
Found 4 tables in 'Q1 Planning': 'Feature Roadmap' (23 rows), 'Budget Tracker' (8 rows), 'Team Capacity' (12 rows), and 'Risk Register' (5 rows). The Feature Roadmap table was last modified 2 hours ago and contains columns for Priority, Owner, Status, and Target Date. Budget Tracker includes actual vs. planned spend with formulas calculating variance.
This read-heavy example shows the MCP's ability to introspect doc structure without opening the Coda UI. Requires API key with read access to the specified doc. Response time depends on doc size; large docs with hundreds of tables may take 3-5 seconds to enumerate.
@Coda add a new row to the 'Feature Roadmap' table: Feature name 'Dark mode toggle', Priority 'High', Owner 'Sarah Chen', Status 'Backlog'
Successfully added row to 'Feature Roadmap' in the Q1 Planning doc. New row ID: i-abc123XYZ. The row was inserted with Feature='Dark mode toggle', Priority='High', Owner='Sarah Chen', Status='Backlog', and Target Date left blank. Note that any automation rules or buttons configured in this table will not trigger via API—only manual edits in the Coda UI fire those.
This write example demonstrates direct table manipulation. The MCP returns a row ID you can reference in follow-up prompts. Be aware: Coda's API does not trigger Pack automations, buttons, or cross-doc syncs. If your table has complex formulas or lookups, verify the new row's calculated fields in the UI after creation.
@Coda read all rows from 'Risk Register' where Status is 'Open', then draft a summary email highlighting the top 3 risks by severity
Retrieved 3 open risks from Risk Register: (1) 'API rate limit breach' (Severity: Critical, Owner: Dev Ops), (2) 'Delayed vendor contract' (Severity: High, Owner: Legal), (3) 'Insufficient QA coverage' (Severity: High, Owner: QA Lead). Draft email: 'Team—three open risks need immediate attention this week. Critical: API rate limits are at 87% utilization; Dev Ops is evaluating caching strategies. High priority: vendor contract delayed by 10 days, Legal is expediting review. High priority: QA coverage gaps identified in the checkout flow; QA Lead scheduling additional test cycles.'
This synthesis example pairs the MCP's data retrieval with the AI's summarization. The AI interprets severity rankings and composes prose—useful for standup prep or stakeholder updates. Accuracy depends on your table schema; if column names differ ('Priority' vs 'Severity'), specify them in your prompt to avoid misreads.
Use-case deep-dives
When Coda MCP beats manual doc setup for agencies
A 6-person consulting shop closes 3-4 new clients a month, each needing a project tracker, onboarding checklist, and status dashboard. The Coda MCP's 'Copy Document' tool lets them script the entire setup: duplicate the master template, rename it with the client name, set permissions for the client contact, and add the custom domain if they're on a white-label tier. This cuts onboarding from 20 minutes of clicking to 90 seconds of running a prompt. The break-even is around 2 new clients per month—below that, the API key overhead isn't worth it. If your templates need more than doc-level customization (like pre-filling table rows with CRM data), you'll hit the 50-tool ceiling fast and need to chain multiple calls. For pure template stamping at small-team scale, this MCP is the right call.
Coda MCP for recurring team ritual automation
A 10-person product team runs two-week sprints and resets their sprint planning doc every Monday: archive last sprint's page, export it for the retro, create a new page from template, and notify the team in Slack. The Coda MCP handles the export ('Begin content export', 'Content export status') and page duplication in one workflow. The API key auth means any team member can trigger it from Switchy without individual OAuth. The trade-off: if your sprint doc has complex conditional formatting or cross-doc syncs, the MCP can't replicate those—it's a structural copy, not a logic clone. This works best when your template is data-light and your cadence is predictable. For teams running sprints shorter than a week or with more than 15 active docs, the manual coordination cost drops below the automation threshold.
When Coda MCP scales pack distribution for SaaS teams
A 12-person SaaS company built a Coda Pack for their API and distributes it to 40+ integration partners. Each new partner needs workspace-level permissions added, and each quarter they audit and revoke access for churned accounts. The Coda MCP's 'Add a permission for pack' and related pack tools let them script the entire lifecycle: onboard a partner with one prompt, bulk-revoke at quarter-end, and log every change for compliance. The 50-tool limit isn't a blocker here because pack management is a narrow domain. The constraint: if you're managing permissions across more than 10 packs simultaneously, the API rate limits (not documented in the MCP schema) will slow you down. For single-pack distribution at mid-market scale, this MCP eliminates the spreadsheet tracking and manual Coda UI work. If you're not publishing packs, ignore this scenario entirely.
Frequently asked
What can the Coda MCP do in Switchy?
The Coda MCP lets your team create, copy, and manage Coda docs and packs directly from Switchy. It handles permissions, custom domains, content exports, and pack publishing workflows. You can automate doc creation, bulk-update permissions, or trigger exports without opening Coda's UI. It's built for teams that treat Coda as their system of record and want programmatic control.
Do I need a Coda API key to connect this MCP?
Yes. You'll generate an API key from your Coda account settings and paste it into Switchy during setup. The key inherits your Coda permissions, so if you're a doc maker or workspace admin, the MCP can manage packs and permissions. If you're a doc editor, it's limited to reading and editing content. One key per Switchy workspace is typical.
Can the Coda MCP edit tables and formulas inside docs?
No. The MCP focuses on document-level operations—copying docs, managing permissions, exporting content, publishing packs. It doesn't manipulate rows, columns, or formulas within tables. For that, use Coda's native automations or the Coda API directly. This MCP is for doc orchestration, not cell-level edits.
How is this different from using Coda's API directly?
The MCP wraps Coda's API into 50 natural-language tools that Switchy's AI can call without you writing code. Instead of crafting HTTP requests and parsing JSON, you describe what you want—'copy this doc and add Sarah as an editor'—and the MCP handles the API calls. It's faster for ad-hoc tasks; the raw API is better for custom integrations.
Who on the team should connect the Coda MCP?
Whoever owns your Coda workspace or manages doc permissions. That person's API key determines what the MCP can access. If you connect it with a doc maker's key, the whole team can publish packs and manage permissions through Switchy. If you use an editor's key, it's read-and-edit only. One connection per workspace is standard.