Coda MCP Server
Provides tools to interact with Coda documents, allowing for the management of pages, tables, columns, and rows, as well as the ability to list formulas, controls, and trigger buttons.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Coda MCP Serverlist all the tables in my 'Product Roadmap' doc"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Coda MCP Server (Koyeb + LangSmith)
This repo runs a Coda MCP server with:
Streamable HTTP endpoint:
/mcp(recommended)Legacy SSE endpoint:
/sse
Quick Start (Koyeb First)
1. Fork or use this repo on GitHub
Use this repository in your own GitHub account (for example RunLittleTurtle/mcp-coda).
2. Create a Koyeb account and connect GitHub
In Koyeb:
Create a new Web service
Select your GitHub repo and
mainbranchKeep Buildpack as builder
Choose Free / CPU Eco instance
3. Set environment variables
Add these variables in Koyeb:
API_KEY= your Coda API keyPORT=3000

4. Configure port
In Koyeb Ports:
Port:
3000Protocol:
HTTPPublic HTTPS access: enabled

5. Deploy
Click Save and deploy.
After deploy, your public URL will look like:
https://your-service-name.koyeb.app
Health check:
https://your-service-name.koyeb.app/health
MCP endpoint:
https://your-service-name.koyeb.app/mcp
LangSmith Agent Builder Setup
Add an MCP server with:
Name:
mcp-coda(or your preferred name)URL:
https://your-service-name.koyeb.app/mcpAuthentication:
Static HeadersHeaders: none

Important:
Use
/mcp(not/and not/ssein Agent Builder)If tools do not appear after a redeploy, wait a few seconds and reload Agent Builder
Local (minimal)
pnpm install
pnpm build
echo "API_KEY=your-coda-key" > .env
PORT=3000 pnpm start:httpThen test:
http://localhost:3000/healthhttp://localhost:3000/mcp
Environment variables
API_KEYorCODA_API_KEY(required)PORT(optional, default3000)
Credits
Original project: dustinrgood/coda-mcp
Early fork lineage: orellazri/coda-mcp
License
MIT
Available Tools
15 toolscoda_create_docB
Create a new Coda document. Can optionally copy from an existing document (sourceDoc) or create with initial content.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The title of the new document | |
| sourceDoc | No | Optional: ID of a document to copy from | |
| folderId | No | Optional: Folder ID where the document should be created | |
| timezone | No | Optional: Timezone for the document (e.g., "America/Los_Angeles") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the creation action and optional copying, but fails to address critical aspects like required permissions, whether the operation is idempotent, error handling, or what the response includes (e.g., new document ID). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Create a new Coda document') and succinctly covers optional features. Every word serves a purpose with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., permissions, response format), does not explain return values, and offers minimal parameter guidance beyond the schema, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal value by noting that sourceDoc enables copying from an existing document, which slightly clarifies its purpose beyond the schema's 'ID of a document to copy from'. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('create') and resource ('new Coda document'), making the purpose immediately understandable. It distinguishes from siblings like coda_list_docs (list) and coda_delete_doc (delete), though it doesn't explicitly contrast with coda_create_row which creates a row within a document rather than a document itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the mention of optional copying from an existing document, suggesting when this feature might be relevant. However, it provides no explicit guidance on when to use this tool versus alternatives like coda_create_row or prerequisites such as permissions or workspace context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_create_rowC
Create a new row in a table
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| tableId | Yes | The ID or name of the table | |
| cells | Yes | Array of cell objects with column and value |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states it creates a row but doesn't disclose permissions required, whether it's idempotent, error handling (e.g., duplicate rows), rate limits, or what happens on success (e.g., returns row ID). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse, though this conciseness comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 3 parameters, no annotations, and no output schema, the description is inadequate. It lacks behavioral details (e.g., side effects, permissions), doesn't explain return values, and offers no usage context, leaving the agent under-informed about critical operational aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter semantics beyond the input schema, which has 100% coverage with clear descriptions for docId, tableId, and cells. Since schema coverage is high, the baseline is 3, but the description doesn't compensate with extra context like format examples or usage tips.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and target resource ('new row in a table'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'coda_update_row' or 'coda_list_rows', which would require mentioning it's specifically for initial creation rather than modification or retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid docId and tableId), contrast with 'coda_update_row' for modifying existing rows, or specify scenarios where creation is appropriate versus listing or other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_delete_docA
Permanently delete a Coda document. This action cannot be undone. Use with caution.
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates critical behavioral traits: the action is permanent ('permanently delete'), irreversible ('cannot be undone'), and carries risk ('Use with caution'). This covers the essential safety and consequence information needed for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, consisting of only three short sentences that each serve a distinct purpose: stating the action, warning about irreversibility, and advising caution. There is no wasted language, making it highly efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity (destructive deletion) and lack of annotations or output schema, the description does well by covering the permanent and irreversible nature of the action. However, it could be more complete by mentioning potential side effects (e.g., impact on linked data) or success/failure responses, which would help an agent understand the full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'docId' clearly documented in the schema as 'The ID of the document to delete'. The description does not add any additional meaning or context about the parameter beyond what the schema provides, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('permanently delete') and resource ('a Coda document'), distinguishing it from sibling tools like coda_get_doc (read) or coda_create_doc (create). It uses precise language that leaves no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage with 'Use with caution' and emphasizes the irreversible nature of the action. However, it does not explicitly mention when to use this tool versus alternatives (e.g., archiving vs. deletion) or prerequisites (e.g., required permissions), which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_get_docB
Get detailed information about a specific Coda document by its ID. Returns metadata like name, owner, creation date, and links.
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it returns metadata but does not cover aspects like authentication needs, rate limits, error handling, or whether it's a read-only operation (implied by 'Get' but not explicit). This leaves gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and key details without unnecessary words. Every part earns its place by specifying the action, resource, and return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and return types but lacks depth on usage context or behavioral traits, making it incomplete for optimal agent guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with 'docId' clearly documented. The description adds no additional parameter details beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('Coda document'), specifying it returns metadata like name, owner, creation date, and links. However, it does not explicitly differentiate from sibling tools like 'coda_list_docs', which might list documents without detailed metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'coda_list_docs' for listing documents or other tools for different operations. It lacks explicit when/when-not instructions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_get_tableC
Get detailed information about a specific table
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| tableId | Yes | The ID or name of the table |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'get' operation, implying read-only behavior, but doesn't clarify authentication needs, rate limits, error conditions, or what 'detailed information' includes. This leaves significant gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed information' returns, authentication requirements, or error handling. For a read operation with no structured output documentation, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both required parameters (docId and tableId). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get detailed information') and resource ('about a specific table'), making the purpose immediately understandable. However, it doesn't differentiate this from sibling tools like coda_list_tables or coda_get_doc, which would require more specificity for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like coda_list_tables (for listing tables) or coda_get_doc (for document-level info), nor does it specify prerequisites or contexts for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_list_columnsC
List all columns in a table
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| tableId | Yes | The ID or name of the table | |
| limit | No | Maximum columns to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'List all columns' but does not mention pagination behavior, rate limits, authentication requirements, or what the output format looks like (e.g., JSON structure). For a read operation with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—it directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not cover behavioral aspects like pagination, error handling, or return values, which are critical for a list operation. For a tool with three parameters and no structured output information, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema fully documents the three parameters (docId, tableId, limit). The description adds no additional meaning beyond what the schema provides, such as explaining relationships between parameters or usage examples. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all') and resource ('columns in a table'), making the purpose understandable. However, it does not differentiate this tool from sibling tools like 'coda_list_tables' or 'coda_list_rows' beyond the resource type, which is a minor gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'coda_get_table' for table metadata or 'coda_list_rows' for row data. It lacks context about prerequisites or typical use cases, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_list_controlsA
List all controls (buttons, sliders, etc.) in a Coda document
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| limit | No | Maximum controls to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the basic behavior of listing controls, but does not add context on permissions, rate limits, pagination, or return format. The description is adequate for a read operation but lacks detailed behavioral traits beyond the minimal purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose without unnecessary words. It directly states the tool's function and includes helpful examples ('buttons, sliders, etc.'), making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple read operation with full schema coverage, the description is minimally complete. It covers the basic purpose but lacks details on output format, error handling, or advanced usage, which could be beneficial for an AI agent. It meets the minimum threshold for this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (docId and limit). The description does not add any meaning beyond what the schema provides, such as explaining what a 'control' entails or how the limit parameter interacts with the listing. Baseline 3 is appropriate as the schema handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all') and resource ('controls in a Coda document'), with examples of controls ('buttons, sliders, etc.') that help distinguish it from sibling tools like coda_list_rows or coda_list_tables. It precisely defines what the tool does without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to list controls in a Coda document, but it does not explicitly state when to use this tool versus alternatives (e.g., coda_list_formulas or coda_list_columns) or provide any exclusions. The context is clear but lacks explicit guidance on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_list_docsB
List all Coda documents accessible to the authenticated user. Supports filtering by owner, workspace, folder, and search query.
| Name | Required | Description | Default |
|---|---|---|---|
| isOwner | No | Filter to only docs owned by the user | |
| query | No | Search query to filter documents by name | |
| workspaceId | No | Filter to docs in a specific workspace | |
| folderId | No | Filter to docs in a specific folder | |
| limit | No | Maximum number of documents to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool lists documents accessible to the authenticated user, which hints at permission-based access, but fails to disclose critical behavioral traits such as pagination handling (implied by 'limit' parameter but not explained), rate limits, error conditions, or the format of returned data. This leaves significant gaps in understanding how the tool behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently states the core action ('List all Coda documents'), specifies the scope ('accessible to the authenticated user'), and enumerates key filtering capabilities. There is no wasted language, and it is front-loaded with the main purpose, making it highly concise and effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a list operation with 5 parameters) and the absence of both annotations and an output schema, the description is moderately complete. It covers the purpose and filtering options but lacks details on behavioral aspects (e.g., response format, error handling) and doesn't compensate for the missing output schema. This makes it adequate for basic understanding but insufficient for full contextual awareness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value by summarizing the filtering options (owner, workspace, folder, search query), which aligns with the parameters in the schema. However, with 100% schema description coverage, the schema already documents each parameter thoroughly (e.g., 'isOwner' filters to user-owned docs). The description provides a high-level overview but doesn't add significant semantic details beyond what the schema offers, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all Coda documents accessible to the authenticated user'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'coda_get_doc' (which likely retrieves a single document) or other list tools (e.g., 'coda_list_tables'), leaving room for ambiguity in tool selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning filtering capabilities (owner, workspace, folder, search query), suggesting it's for retrieving multiple documents with optional filters. However, it lacks explicit guidance on when to use this versus alternatives like 'coda_get_doc' for a single document or other list tools for specific resources, providing only implied rather than clear directives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_list_formulasB
List all formulas in a Coda document
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| limit | No | Maximum formulas to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('List') but doesn't describe key behaviors: whether this is a read-only operation, if it requires authentication, how results are formatted (e.g., pagination, sorting), or error conditions. For a tool with no annotation coverage, this leaves significant gaps in understanding its operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence ('List all formulas in a Coda document') contributes directly to understanding the tool's function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage context, behavioral traits, and output format. Without annotations or an output schema, the description should do more to compensate, but it falls short of being fully complete for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (docId and limit). The description adds no additional parameter semantics beyond implying the tool operates on a document. Since the schema handles parameter documentation adequately, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all formulas in a Coda document'), making the purpose immediately understandable. It distinguishes this tool from siblings like coda_list_docs or coda_list_tables by specifying 'formulas' as the target resource. However, it doesn't explicitly differentiate from coda_list_columns or coda_list_rows, which are also list operations on document components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid docId), exclusions, or comparisons to other list tools like coda_list_tables. Without this context, an agent might struggle to choose between similar list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_list_pagesC
List all pages in a Coda document
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| limit | No | Maximum pages to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists pages but fails to describe key behaviors: whether it's read-only (implied but not explicit), how pagination or the limit parameter works, what the output format looks like, or any error conditions. For a tool with no annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address the tool's behavior, output format, or error handling, which are critical for an agent to use it effectively. For a listing tool with no structured support, more contextual information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for both parameters (docId and limit). The description adds no additional meaning beyond what the schema provides, such as explaining the relationship between parameters or usage examples. Given the high schema coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all pages') and resource ('in a Coda document'), making the purpose immediately understandable. However, it doesn't differentiate this tool from similar sibling tools like 'coda_list_tables' or 'coda_list_columns', which follow the same pattern but target different document components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid docId), exclusions, or comparisons to other listing tools like 'coda_list_docs' for documents versus pages. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_list_rowsC
List all rows in a table with optional filtering
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| tableId | Yes | The ID or name of the table | |
| query | No | Optional query to filter rows | |
| limit | No | Maximum rows to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'optional filtering' and implies a read operation, but fails to specify critical details like pagination behavior, rate limits, authentication requirements, or what happens when no rows match. For a list operation with potential large datasets, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 8 words, front-loading the core functionality ('List all rows in a table') and efficiently adding the key feature ('with optional filtering'). Every word serves a purpose with zero redundancy, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a list operation with filtering capabilities, no annotations, and no output schema, the description is insufficient. It doesn't explain what the output looks like (e.g., row structure, pagination tokens), doesn't mention error conditions, and provides minimal behavioral context. For a tool with 4 parameters and sibling alternatives, this leaves too many gaps for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds minimal value by mentioning 'optional filtering' which corresponds to the 'query' parameter, but doesn't provide additional context about filter syntax or practical usage examples. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all rows') and resource ('in a table'), making the purpose immediately understandable. It distinguishes from siblings like coda_create_row or coda_update_row by focusing on retrieval rather than modification. However, it doesn't explicitly differentiate from coda_get_table, which might also retrieve table data, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like coda_get_table or coda_list_columns, nor does it mention prerequisites such as needing a document ID and table ID. It lacks context about typical use cases or limitations, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_list_tablesA
List tables in a Coda document, with optional fuzzy search by table name/page name or Coda URL context
| Name | Required | Description | Default |
|---|---|---|---|
| docId | No | The document ID (optional if contextUrl contains a Coda doc URL) | |
| limit | No | Maximum tables to return (default: 100) | |
| query | No | Free-text query to find relevant tables by table/page name | |
| pageName | No | Hint for the parent page name (e.g. "Insights RH") | |
| pageId | No | Filter tables under a specific page ID | |
| contextUrl | No | Optional full Coda URL; used to infer docId and search hints | |
| includeColumns | No | When true, include column list for each matched table | |
| scanLimit | No | Maximum tables to scan before ranking (default: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions optional fuzzy search and URL context inference, adding some behavioral context. However, it lacks details on permissions, rate limits, error handling, or the return format (e.g., pagination, structure), which are important for a tool with 8 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the core functionality and key optional features (fuzzy search, URL context). It is front-loaded with the main purpose and avoids unnecessary details, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no annotations, no output schema), the description is incomplete. It covers the basic purpose and search context but lacks information on behavioral aspects like authentication, output format, or error conditions, which are needed for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds minimal value by hinting at fuzzy search and URL context, but does not provide additional semantics beyond what the schema descriptions cover, such as how 'query' interacts with other parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('tables in a Coda document'), making the purpose specific. It distinguishes from siblings like coda_list_docs (lists documents) and coda_list_rows (lists rows within tables) by focusing on tables within a document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage with 'optional fuzzy search by table name/page name or Coda URL context', indicating when to use this tool for searching. However, it does not explicitly state when not to use it or name alternatives among siblings, such as coda_get_table for retrieving a specific table.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_push_buttonC
Push a button control in a Coda document
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| controlId | Yes | The ID or name of the button control |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('push') but doesn't explain what happens when a button is pushed - whether it triggers workflows, sends data, requires specific permissions, or has side effects. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and gets straight to the point without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'pushing' a button means functionally, what happens after invocation, or what the user should expect. Given the complexity of interacting with UI controls programmatically, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with both parameters clearly documented in the schema. The description doesn't add any meaningful parameter information beyond what's already in the schema, so it meets the baseline for high schema coverage but doesn't provide additional context about parameter usage or relationships.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('push') and target ('a button control in a Coda document'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential alternatives like 'coda_list_controls' or explain what 'pushing' a button actually does functionally.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (like needing to identify button controls first), use cases for button pushing, or relationships with sibling tools like 'coda_list_controls' which might be needed to discover button IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_update_rowC
Update an existing row in a table
| Name | Required | Description | Default |
|---|---|---|---|
| docId | Yes | The ID of the document | |
| tableId | Yes | The ID or name of the table | |
| rowId | Yes | The ID of the row to update | |
| cells | Yes | Array of cell objects to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'update an existing row,' implying a mutation operation, but lacks details on permissions required, error handling (e.g., if the row doesn't exist), rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Update an existing row in a table') that is front-loaded and wastes no words. It directly conveys the core action without unnecessary elaboration, making it highly concise and well-structured for quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances like partial updates. For a tool that modifies data, more context is needed to ensure safe and correct usage by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters (docId, tableId, rowId, cells) well-documented in the schema. The description adds no additional meaning beyond what the schema provides, such as explaining the structure of 'cells' or usage examples. Baseline 3 is appropriate since the schema does the heavy lifting, but the description doesn't compensate with extra insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('update') and resource ('existing row in a table'), making the purpose immediately understandable. It distinguishes itself from siblings like 'coda_create_row' (creation vs. update) and 'coda_delete_doc' (row vs. document operations). However, it doesn't specify what kind of table (e.g., Coda table) or provide additional context beyond the basic verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing row), exclusions (e.g., not for creating rows), or comparisons to siblings like 'coda_create_row' for new rows or 'coda_list_rows' for viewing. Usage is implied from the action 'update,' but explicit context is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coda_whoamiA
Get information about the current authenticated user. Use this to verify API key and check permissions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It effectively discloses key behavioral traits: this is a read operation that returns user information and serves authentication verification purposes. However, it doesn't mention potential rate limits, error conditions, or response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each serve distinct purposes: stating the tool's function and providing usage guidance. There's zero wasted language, and it's front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter authentication tool with no annotations or output schema, the description provides good coverage of purpose and usage. However, without an output schema, it could benefit from mentioning what user information is returned (e.g., user ID, email, permissions).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on the tool's purpose and usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Get information') and resource ('current authenticated user'). It distinguishes itself from sibling tools like coda_get_doc or coda_list_docs by focusing on user authentication rather than document operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'to verify API key and check permissions.' This provides clear context for usage versus alternatives, making it evident this is for authentication/authorization verification rather than data manipulation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool has a clearly distinct purpose targeting specific resources and actions in Coda, such as documents, tables, rows, columns, controls, formulas, pages, and user info. There is no overlap or ambiguity between tools like coda_create_doc and coda_create_row, or coda_list_tables and coda_get_table, making misselection unlikely.
All tool names follow a consistent 'coda_verb_noun' pattern with snake_case throughout, such as coda_create_doc, coda_list_rows, and coda_update_row. This predictability aids agent understanding and tool selection without any deviations in style.
With 15 tools, the server is well-scoped for managing Coda documents, tables, rows, and related elements. Each tool earns its place by covering essential operations like CRUD for documents and rows, listing various components, and user authentication, without being overly sparse or bloated.
The tool set provides comprehensive coverage for core Coda workflows, including document and row lifecycle management, listing of tables, columns, pages, formulas, and controls, and user verification. Minor gaps exist, such as no tools for updating documents or deleting rows, but agents can work around these with available operations.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Build Apps and run code in 30 languages — sandboxed, with persistent sessions for agent loops.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RunLittleTurtle/mcp-coda'
If you have feedback or need assistance with the MCP directory API, please join our Discord server