coda-mcp-server
Provides tools for managing Coda documents, pages, tables, rows, formulas, and user authentication, enabling AI-powered document automation and data manipulation through the Coda API.
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 my documents in Coda"
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
A Model Context Protocol (MCP) server that provides seamless integration between Claude and Coda.io, enabling AI-powered document automation and data manipulation.
Note: This is an unofficial MCP server developed by TJC L.P. and is not affiliated with, endorsed by, or supported by Coda. For official Coda support and documentation, please visit coda.io.
Note: Version 1.1.0+ uses
snake_casefield names (e.g.,browser_linkinstead ofbrowserLink) for Python ecosystem compatibility. See CHANGELOG for migration details if upgrading from 1.0.x.
Features
Document Operations
List documents - Search and filter your Coda docs
Create documents - Generate new docs with optional templates
Read document info - Get metadata about any doc
Update documents - Modify doc properties like title and icon
Delete documents - Remove docs (use with caution!)
Page Management
List pages - Browse all pages in a doc
Create pages - Add new pages with rich content
Read pages - Get page details and content
Update pages - Modify page properties and content
Delete pages - Remove pages from docs
Export page content - Get full HTML/Markdown content with
begin_page_content_exportandget_page_content_export_status
Table & Data Operations
List tables - Find all tables and views in a doc
Get table details - Access table metadata and structure
List columns - Browse table columns with properties
Get column info - Access column formulas and formats
Row Operations
List rows - Query and filter table data
Get specific rows - Access individual row data
Insert/Update rows - Add or modify data with
upsert_rowsUpdate single row - Modify specific row data
Delete rows - Remove single or multiple rows
Push buttons - Trigger button columns in tables
Formula Operations
List formulas - Find all named formulas in a doc
Get formula details - Access formula expressions
Authentication
Who am I - Get current user information
Related MCP server: Grist MCP Server
Installation
Prerequisites
Coda API Key: Get your API token from Coda Account Settings
Python 3.11+ (including 3.14): Required for the MCP server
Option 1: Install from PyPI (Recommended)
The Coda MCP server is available on PyPI and can be installed directly using uvx (recommended) or pip:
# Using uvx (no installation needed, just run)
uvx coda-mcp-server
# Or install globally with pip
pip install coda-mcp-serverOption 2: Install from Source
Clone the repository
git clone https://github.com/TJC-LP/coda-mcp-server.git cd coda-mcp-serverInstall dependencies
uv syncSet your API key as an environment variable (see Configuration section below)
Configuration
Option 1: Claude Code (Recommended for Development)
For using with Claude Code during development:
Set your API key as a shell environment variable:
# Add to your shell profile (~/.zshrc, ~/.bashrc, etc.) export CODA_API_KEY="your-coda-api-key-here" # Or set it for the current session export CODA_API_KEY="your-coda-api-key-here"MCP configuration is already included!
The repository includes a
.mcp.jsonfile that automatically configures the Coda MCP server:{ "mcpServers": { "coda": { "command": "uv", "args": ["run", "coda-mcp-server"], "env": { "CODA_API_KEY": "${CODA_API_KEY}" } } } }The
${CODA_API_KEY}syntax reads the API key from your shell environment.Reload Claude Code - The MCP server will be automatically available
Security Note: API keys are read from your shell environment, not from files. This prevents accidental commits and arbitrary file loading.
Alternative: Using .env files with dotenv-cli
If you prefer file-based configuration, you can use dotenv-cli to inject environment variables:
# Create .env file from example (gitignored)
cp .env.example .env
# Edit .env and replace 'changeme' with your API key
# Run Claude Code with dotenv (no installation needed)
bunx dotenv-cli -- claude
# or
npx dotenv-cli -- claudeOption 2: Claude Desktop
To use the Coda MCP server with Claude Desktop, you need to add it to your Claude Desktop configuration file.
Configuration File Location:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the Coda MCP Server:
Edit the configuration file and add the Coda server to the mcpServers section:
{
"mcpServers": {
"coda": {
"command": "uvx",
"args": ["coda-mcp-server"],
"env": {
"CODA_API_KEY": "your-coda-api-key-here"
}
}
}
}Important: Replace
your-coda-api-key-herewith your actual Coda API key from Coda Account Settings.
Alternative: Using Local Installation
If you installed from source, you can point to your local installation:
{
"mcpServers": {
"coda": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/repo",
"coda-mcp-server"
],
"env": {
"CODA_API_KEY": "your-coda-api-key-here"
}
}
}
}Verify Installation
After adding the configuration:
Restart Claude Desktop
Look for the settings icon in the bottom of your conversation
Click it and verify that "coda" is listed as a connected server
You should see 26 available Coda tools when you click
codain the dropdown and can toggle the ones that you need specifically.
Usage in Claude
Once installed, you can use Coda operations directly in Claude by prefixing commands with coda:. Here are some examples:
Document Operations
# List all your docs
Use coda:list_docs with is_owner: true, is_published: false, query: ""
# Get info about a specific doc
Use coda:get_doc_info with doc_id: "your-doc-id"
# Create a new doc
Use coda:create_doc with title: "My New Doc"Working with Tables
# List tables in a doc
Use coda:list_tables with doc_id: "your-doc-id"
# Get all rows from a table with column names
Use coda:list_rows with doc_id: "your-doc-id", table_id_or_name: "Table Name", use_column_names: true
# Insert a new row
Use coda:upsert_rows with doc_id: "your-doc-id", table_id_or_name: "Table Name", rows_data: [{
cells: [
{column: "Name", value: "John Doe"},
{column: "Email", value: "john@example.com"}
]
}]Page Content Export
# Start page export
Use coda:begin_page_content_export with doc_id: "your-doc-id", page_id_or_name: "Page Name", output_format: "markdown"
# Check export status and get content
Use coda:get_page_content_export_status with doc_id: "your-doc-id", page_id_or_name: "Page Name", request_id: "request-id-from-previous-step"API Reference
Core Functions
Document Management
list_docs(is_owner, is_published, query, ...)- List available docsget_doc_info(doc_id)- Get document metadatacreate_doc(title, source_doc?, timezone?, ...)- Create new documentupdate_doc(doc_id, title?, icon_name?)- Update document propertiesdelete_doc(doc_id)- Delete a document
Page Operations
list_pages(doc_id, limit?, page_token?)- List pages in a docget_page(doc_id, page_id_or_name)- Get page detailscreate_page(doc_id, name, subtitle?, ...)- Create new pageupdate_page(doc_id, page_id_or_name, ...)- Update page propertiesdelete_page(doc_id, page_id_or_name)- Delete a pagebegin_page_content_export(doc_id, page_id_or_name, output_format?)- Start async page exportget_page_content_export_status(doc_id, page_id_or_name, request_id)- Poll export status and download content
Table Operations
list_tables(doc_id, limit?, sort_by?, ...)- List all tablesget_table(doc_id, table_id_or_name)- Get table detailslist_columns(doc_id, table_id_or_name, ...)- List table columnsget_column(doc_id, table_id_or_name, column_id_or_name)- Get column details
Row Operations
list_rows(doc_id, table_id_or_name, query?, ...)- List and filter rowsget_row(doc_id, table_id_or_name, row_id_or_name, ...)- Get specific rowupsert_rows(doc_id, table_id_or_name, rows_data, ...)- Insert or update rowsupdate_row(doc_id, table_id_or_name, row_id_or_name, row, ...)- Update single rowdelete_row(doc_id, table_id_or_name, row_id_or_name)- Delete single rowdelete_rows(doc_id, table_id_or_name, row_ids)- Delete multiple rowspush_button(doc_id, table_id_or_name, row_id_or_name, column_id_or_name)- Trigger button
Formula Operations
list_formulas(doc_id, limit?, sort_by?)- List named formulasget_formula(doc_id, formula_id_or_name)- Get formula details
Authentication
whoami()- Get current user information
Development
Project Structure
coda-mcp-server/
├── src/
│ ├── coda_mcp_server/
│ │ ├── server.py # MCP server orchestrator (700 lines)
│ │ ├── client.py # HTTP client with Pydantic serialization
│ │ ├── models/ # 83 Pydantic models (7 modules)
│ │ │ ├── __init__.py
│ │ │ ├── common.py # Shared types and base models
│ │ │ ├── docs.py # Document models
│ │ │ ├── pages.py # Page models
│ │ │ ├── tables.py # Table and column models
│ │ │ ├── rows.py # Row and cell models
│ │ │ ├── exports.py # Export workflow models
│ │ │ └── formulas.py # Formula models
│ │ └── tools/ # Pure functions (5 modules)
│ │ ├── __init__.py
│ │ ├── docs.py # Document operations
│ │ ├── pages.py # Page operations
│ │ ├── tables.py # Table operations
│ │ ├── rows.py # Row operations
│ │ └── formulas.py # Formula operations
│ └── resources/
│ └── coda-openapi.yml # Coda API specification
├── tests/ # 44 tests
│ ├── conftest.py
│ ├── test_models.py
│ └── test_client_requests.py
├── .env.example
├── .mcp.json # Claude Code integration
└── pyproject.tomlRunning Locally for Development
# Install dependencies
uv sync
# Set your API key (if not already in your shell profile)
export CODA_API_KEY="your-coda-api-key-here"
# Run the server directly
uv run python src/coda_mcp_server/server.pyTroubleshooting
Common Issues
"API Error 401: Unauthorized"
Check that your
CODA_API_KEYenvironment variable is set correctlyVerify with:
echo $CODA_API_KEYEnsure your API key has the necessary permissions
"Rate limit exceeded"
Coda API has rate limits; wait for the specified time before retrying
The server includes automatic rate limit detection
Boolean parameters not working
The server automatically converts boolean values to strings ("true"/"false")
This is handled internally, just use boolean values normally
Page export issues
Use the two-step export workflow:
begin_page_content_exportthenget_page_content_export_statusThe status check automatically downloads content when ready
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Support
For issues and feature requests, please use the GitHub Issues page.
Available Tools
26 toolsbegin_page_content_exportA
Start an async export of page content in HTML or markdown format - returns request ID to poll for completion with get_page_content_export_status
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| page_id_or_name | Yes | ||
| output_format | No | html |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The identifier of this export request. |
| status | Yes | The status of this export. |
| href | Yes | The URL that reports the status of this export. Poll this URL to get the content URL when the export has completed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description clearly communicates the async behavior and the polling mechanism. While it doesn't detail side effects or authentication, the essential behavioral trait (async export with polling) is well-conveyed, which is sufficient for this context.
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 front-loads the core purpose and immediately conveys the key behavior (async, polling). No unnecessary words or repetition.
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 async nature and existence of an output schema, the description covers the essential flow: start export, get request ID, poll status. It omits potential failure modes or concurrency details, but for a straightforward export tool, this is nearly complete.
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 has 0% description coverage, so the description must compensate. It clarifies that output_format accepts 'HTML or markdown', adding meaning beyond the schema. However, doc_id and page_id_or_name are not explained, leaving some ambiguity despite their self-evident names.
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 'Start', the resource 'page content export', and specifies the output formats 'HTML or markdown'. It also explains the async nature and mentions the related polling tool, distinguishing it from siblings like get_page_content_export_status.
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 mentions polling with get_page_content_export_status to check completion, providing some usage context. However, it does not specify when to use this tool versus alternatives, nor does it include exclusions or prerequisites. This leaves room for ambiguity in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_docB
Create a new Coda doc with optional configuration including title, timezone, folder placement, and initial page content
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| source_doc | No | ||
| timezone | No | ||
| folder_id | No | ||
| initial_page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the Coda doc. |
| type | Yes | The type of this resource. |
| href | Yes | API link to the Coda doc. |
| browser_link | Yes | Browser-friendly link to the Coda doc. |
| icon | No | Info about the icon. |
| name | Yes | Name of the doc. |
| owner | Yes | Email address of the doc owner. |
| owner_name | Yes | Name of the doc owner. |
| doc_size | No | The number of components within a Coda doc. |
| source_doc | No | Reference to a Coda doc from which this doc was copied, if any. |
| created_at | Yes | Timestamp for when the doc was created. |
| updated_at | Yes | Timestamp for when the doc was last modified. |
| published | No | Information about the publishing state of the document. |
| folder | Yes | Reference to the folder containing this doc. |
| workspace | Yes | Reference to the workspace containing this doc. |
| workspace_id | Yes | ID of the Coda workspace containing this doc. |
| folder_id | Yes | ID of the Coda folder containing this doc. |
| request_id | Yes | An arbitrary unique identifier for this request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only states the creation action but does not mention side effects, permissions, rate limits, or error handling. The return value or confirmation behavior is also missing.
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?
Single sentence, no filler. Concise but could be slightly more structured, e.g., listing parameters more explicitly.
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 5 parameters and a nested schema, the description covers the high-level purpose but lacks detail on parameter dependencies, defaults, and output. Since an output schema exists, the omission of return values is partially mitigated.
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 lists some parameters (title, timezone, folder placement, initial page content) which adds value beyond the 0% schema description coverage. However, it omits the source_doc parameter and does not clarify the nested object structure for initial_page.
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: to create a new Coda doc with optional configurations like title, timezone, folder placement, and initial page content. It includes a specific verb and resource, and distinguishes from siblings like create_page.
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?
No explicit guidance on when to use this tool versus alternatives (e.g., create_page, update_doc). The description does not mention when not to use it or provide any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pageB
Create a new page in a Coda doc with optional subtitle, icon, parent page, and initial HTML/markdown content
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| name | Yes | ||
| subtitle | No | ||
| icon_name | No | ||
| image_url | No | ||
| parent_page_id | No | ||
| page_content | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| id | Yes | ID of the created page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only states the action. It fails to mention side effects (modifying a doc), required permissions, error conditions, or confirmation of creation. This leaves the agent with incomplete understanding of the tool's impact.
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 sentence that front-loads the main purpose and lists options. It is reasonably concise and free of extraneous text, though slightly dense with multiple optional features.
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 (7 parameters, nested content schemas), the description is incomplete. It does not explain the output schema (response), how to use the 'page_content' parameter's sub-types (canvas vs embed), or constraints (required fields). More detailed context is needed for 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 0%, so the description must compensate. It names several parameters (subtitle, icon, parent page, content) but does not explain 'doc_id' or 'name' (both required and crucial). The mention of 'initial HTML/markdown content' adds value for 'page_content' but overall semantic clarity is partial.
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 a new page'), the resource ('in a Coda doc'), and lists key optional features (subtitle, icon, parent page, initial content). This specificity distinguishes it from sibling tools like 'update_page' or 'list_pages'.
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?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives like 'update_page', nor does it mention prerequisites (e.g., doc existence) or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_docB
Permanently delete a Coda doc by ID - use with extreme caution as this cannot be undone
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses irreversibility with 'cannot be undone', but lacks other behavioral traits such as required permissions, cascading effects, or rate limits. Since no annotations are present, more transparency is needed.
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?
A single sentence with no wasted words. Efficiently conveys the critical warning and 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?
Given the tool's simplicity (one parameter, irreversible action, output schema exists), the description is adequate but lacks parameter detail and could mention prerequisites or consequences.
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 0%, so description must compensate. Only clarifies that doc_id is 'by ID', but provides no additional meaning, format, or source for the ID.
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 (permanently delete) and the resource (Coda doc by ID). It distinguishes from siblings like update_doc and create_doc.
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?
No guidance on when to use this tool vs alternatives. Only a caution phrase, but no explicit usage context or when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pageB
Delete a page from a Coda doc by its ID or name
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| page_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| id | Yes | ID of the page to be deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states deletion, but does not disclose irreversibility, permissions, effects on child pages, or return value. Output schema exists but is not referenced.
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?
Single sentence that front-loads the action and resource. Efficient and to the point with no unnecessary words.
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 0% schema coverage and no annotations, the description is insufficient. It lacks details on output, edge cases, and behavioral context for a mutation tool.
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 coverage is 0%, but description adds meaning by clarifying page identification via ID or name. However, it does not specify format or constraints.
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 'delete', the resource 'page from a Coda doc', and the identifier method 'by its ID or name'. It distinguishes from siblings like delete_doc and delete_row.
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?
No guidance on when to use this tool vs alternatives, no prerequisites mentioned (e.g., page existence), and no exclusions or alternatives provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_rowB
Delete a specific row from a table by its ID or name
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| row_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| id | Yes | ID of the row to be deleted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states 'delete' (destructive) but lacks details on reversibility, permissions, or side effects. With zero annotations, 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?
Single sentence, front-loaded with action and resource, no redundancy. Efficient use of words.
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?
Has output schema but still lacks critical context: error handling, auth requirements, impact on related data, or confirmation steps. For a delete operation with required parameters, more guidance 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?
Schema description coverage is 0%, requiring the description to compensate. It mentions 'by its ID or name' but does not explicitly map to row_id_or_name or explain doc_id and table_id_or_name. Minimal added value over raw schema.
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 (delete), the resource (specific row from a table), and the method (by ID or name). It effectively distinguishes from siblings like delete_rows (plural) by specifying 'specific row'.
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?
No guidance on when to use this tool versus alternatives such as delete_rows or update_row. No prerequisites, context, or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_rowsC
Delete multiple rows from a table at once using a list of row IDs
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| row_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| row_ids | Yes | Row IDs 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 only states the basic action of deletion without revealing permanence, authorization needs, error handling, or partial success behavior.
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 sentence, which is concise but underspecified. It front-loads the key action but sacrifices 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?
Given the tool has 3 required parameters, no annotations, and low schema coverage, the description is insufficient. It fails to explain how to locate the table, format row IDs, or interpret the output (despite having an output schema).
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?
Despite 0% schema description coverage, the description only hints at 'row_ids' but completely omits any explanation for 'doc_id' and 'table_id_or_name'. Two out of three required parameters are left to the agent to infer.
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 'Delete', the resource 'multiple rows from a table', and the method 'using a list of row IDs'. It effectively distinguishes from the sibling 'delete_row' (singular) by emphasizing 'multiple' and 'at once'.
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 explicit guidance on when to use this tool versus the alternatives like 'delete_row' or 'delete_doc'. It does not mention prerequisites, scenarios, or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_columnB
Get detailed information about a specific column including its type, format, and formula
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| column_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the column. |
| type | Yes | The type of this resource. |
| href | Yes | API link to the column. |
| name | Yes | Name of the column. |
| display | No | Whether the column is the display column. |
| calculated | No | Whether the column has a formula set on it. |
| formula | No | Formula on the column. |
| default_value | No | Default value formula for the column. |
| format | Yes | Format of the column. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It only says 'Get detailed information' but does not mention read-only nature, permission requirements, or potential errors. For a read operation, basic safety is implied but not explicit.
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 sentence of 12 words, front-loaded with the action. It is concise and direct, though it could include more detail without being verbose.
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 existence of an output schema (which covers return values) and the simple nature of the tool, the description is adequate for basic understanding but lacks parameter guidance and usage context, leaving gaps.
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 0%, and the description adds no parameter details. None of the three parameters (doc_id, table_id_or_name, column_id_or_name) are explained beyond their names.
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 'Get detailed information about a specific column' and lists the types of info (type, format, formula). This distinguishes it from siblings like list_columns (list only) and get_table (table-level).
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 use for detailed column info but does not explicitly contrast with alternatives (e.g., when to use list_columns or get_table). No exclusions or recommendations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_infoA
Get detailed metadata about a specific Coda doc by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the Coda doc. |
| type | Yes | The type of this resource. |
| href | Yes | API link to the Coda doc. |
| browser_link | Yes | Browser-friendly link to the Coda doc. |
| icon | No | Info about the icon. |
| name | Yes | Name of the doc. |
| owner | Yes | Email address of the doc owner. |
| owner_name | Yes | Name of the doc owner. |
| doc_size | No | The number of components within a Coda doc. |
| source_doc | No | Reference to a Coda doc from which this doc was copied, if any. |
| created_at | Yes | Timestamp for when the doc was created. |
| updated_at | Yes | Timestamp for when the doc was last modified. |
| published | No | Information about the publishing state of the document. |
| folder | Yes | Reference to the folder containing this doc. |
| workspace | Yes | Reference to the workspace containing this doc. |
| workspace_id | Yes | ID of the Coda workspace containing this doc. |
| folder_id | Yes | ID of the Coda folder containing this doc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It implies a read-only operation ('Get detailed metadata') but does not explicitly state no side effects, auth requirements, or error handling (e.g., if doc not found). This is insufficient for full 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 concise sentence that front-loads the purpose and parameter context. Every word is necessary, and no redundant information is present.
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 simplicity (1 required param, output schema exists), the description covers the core purpose and parameter. However, it lacks usage guidance and behavioral transparency, making it adequate but not fully complete for an agent without prior 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 has 0% coverage (no description for doc_id), requiring the description to compensate. It adds 'by its ID', clarifying the parameter's role, but lacks format or constraints (e.g., a valid Coda doc ID format). This meets the minimum but does not fully compensate.
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 a specific action ('Get detailed metadata') and resource ('specific Coda doc by its ID'), distinguishing it from sibling tools like list_docs which list all docs or other CRUD operations. It is not a tautology and provides a clear purpose.
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 a user needs metadata for a specific doc, but lacks explicit guidance on when to use it versus alternatives (e.g., list_docs for a broader view). No exclusions or conditions are mentioned, so it is adequate but not directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_formulaB
Get details about a specific named formula including its computed value
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| formula_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the formula. |
| type | Yes | The type of this resource. |
| href | Yes | API link to the formula. |
| name | Yes | Name of the formula. |
| parent | Yes | Parent page of the formula. |
| value | Yes | The computed value of the formula. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are given, so the description must cover behavioral traits. It implies a read operation by stating 'Get details', but does not explicitly confirm it is read-only or non-destructive. It also does not mention error behaviors or permissions. The description is adequate but lacks explicit 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 sentence with no unnecessary words. However, it could be slightly expanded to include parameter hints without losing conciseness. It is well-structured and front-loaded with the key 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?
Given the tool has an output schema and only two parameters, the description provides the core idea but misses context like parameter clarification and usage scenarios. It does not fully compensate for the lack of schema descriptions or annotations, but is minimally complete for a simple retrieval tool.
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 0%, meaning the input schema provides no parameter descriptions. The tool description does not explain what 'doc_id' or 'formula_id_or_name' represent, forcing the agent to infer from the tool name. This is insufficient for a tool with two required 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 tool retrieves details about a specific named formula, including its computed value. It uses a specific verb 'get' and resource 'formula', and distinguishes from sibling 'list_formulas' by indicating it targets a specific formula by name or ID.
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?
No guidance is provided on when to use this tool versus alternatives like 'list_formulas'. There is no mention of prerequisites, context, or scenarios where this tool is appropriate or inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageB
Get detailed metadata about a specific page by its ID or name
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| page_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the page. |
| type | Yes | The type of this resource. |
| href | Yes | API link to the page. |
| browser_link | Yes | Browser-friendly link to the page. |
| name | Yes | Name of the page. |
| subtitle | No | Subtitle of the page. |
| icon | No | Icon for the page. |
| image | No | Cover image for the page. |
| content_type | Yes | The type of content on the page. |
| is_hidden | Yes | Whether the page is hidden in the UI. |
| is_effectively_hidden | Yes | Whether the page or any of its parents is hidden in the UI. |
| parent | No | Reference to the parent page. |
| children | Yes | Child pages of this page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'Get detailed metadata', which implies a read operation but provides no additional behavioral traits like permissions, side effects, or limitations.
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?
Single sentence is concise and front-loaded with key purpose, but is slightly under-specified for a tool with 0% schema coverage.
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?
Has output schema obviating return value explanation, but description fails to fully clarify both parameters, making it moderately incomplete.
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 0%; description adds some meaning by mentioning 'by its ID or name' for page_id_or_name but does not explain doc_id's role, leaving one parameter unclear.
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?
Description clearly states verb 'Get' and resource 'detailed metadata about a specific page', distinguishing it from siblings that operate on docs, rows, or tables.
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?
Implies usage when needing metadata for a specific page via ID or name, but lacks explicit when-not or alternative guidance compared to list_pages or get_doc_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_content_export_statusA
Check status of a page export and auto-download content when ready - poll this after starting export with begin_page_content_export
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| page_id_or_name | Yes | ||
| request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | The identifier of this export request. |
| status | Yes | The status of this export. |
| href | Yes | The URL that reports the status of this export. |
| download_link | No | Once the export completes, the location where the resulting export file can be downloaded; this link typically expires after a short time. Call this method again to get a fresh link. |
| error | No | Message describing an error, if this export failed. |
| content | No | The actual exported page content (HTML or markdown). This is automatically downloaded when status is 'complete'. Note: This field is a convenience enhancement not in the OpenAPI spec. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: checking status and auto-downloading when ready. With no annotations, it adds valuable behavioral insight, though it could mention error handling or rate limits.
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?
A single sentence that efficiently conveys purpose, usage context, and key behavior with no extraneous words.
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 presence of an output schema (not shown) and three required parameters, the description provides a clear workflow position and auto-download behavior, though it could address error states or timeouts.
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 0%, and the tool description does not explain any of the three required parameters (doc_id, page_id_or_name, request_id), leaving the agent to infer meaning from names alone.
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 ('Check status'), the resource ('page export'), and the context ('poll this after starting export with begin_page_content_export'), distinguishing it from its sibling tool.
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 instructs when to use the tool (poll after beginning export) and implies it is not for initiating export, providing clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rowA
Get a specific row from a table by its ID or name with all cell values
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| row_id_or_name | Yes | ||
| use_column_names | No | ||
| value_format | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the row. |
| type | Yes | The type of this resource. |
| href | Yes | API link to the row. |
| name | Yes | The display name of the row, based on its identifying column. |
| index | Yes | Index of the row within the table. |
| browser_link | Yes | Browser-friendly link to the row. |
| created_at | Yes | Timestamp for when the row was created. |
| updated_at | Yes | Timestamp for when the row was last modified. |
| values | Yes | Values for a specific row, represented as a hash of column IDs (or names with `useColumnNames`) to values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It indicates a read operation ('get') and mentions return of 'all cell values', but does not disclose error handling, permissions, or side effects. Adequate for a simple fetch, but lacks depth.
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?
Single sentence, no fluff, front-loaded with verb and resource. Every word serves a 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?
The description covers the core functionality but omits explanations for optional parameters (use_column_names, value_format) and error scenarios. With only 0% schema coverage, more detail would be beneficial for full agent autonomy, though output schema may mitigate some gaps.
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?
Despite 0% schema description coverage, the description clarifies that row_id_or_name can be an ID or name, and that the result includes all cell values. This adds meaning beyond parameter names, partially compensating for missing schema descriptions. However, use_column_names and value_format are not explained.
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), resource (specific row from a table), and scope (by ID or name, with all cell values). It effectively distinguishes from siblings like list_rows (multiple rows) and get_table (table 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 implies usage for fetching a single row by ID or name, but lacks explicit guidance on when to use alternatives (e.g., list_rows for multiple rows, get_table for table info). No when-not or alternative tool suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tableB
Get detailed information about a specific table including its schema, columns, and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | ID of the table. |
| type | Yes | The type of this resource. |
| table_type | Yes | Type of the table. |
| href | Yes | API link to the table. |
| browser_link | Yes | Browser-friendly link to the table. |
| name | Yes | Name of the table. |
| parent | Yes | Parent page of the table. |
| parent_table | No | Parent table if this is a view. |
| display_column | Yes | The display column for the table. |
| row_count | Yes | Total number of rows in the table. |
| sorts | Yes | Any sorts applied to the table. |
| layout | Yes | Layout type of the table or view. |
| filter | No | Detailed information about the filter formula for the table, if applicable. |
| created_at | Yes | Timestamp for when the table was created. |
| updated_at | Yes | Timestamp for when the table was last modified. |
| view_id | No | ID of the view if this is a view. |
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 implies a read-only operation by stating 'Get detailed information', but does not explicitly confirm safety or disclose any behavioral traits like permissions or side effects. This is adequate but not thorough.
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 sentence with 14 words, delivering the core purpose without extraneous detail. It is efficiently structured but could be slightly more organized if split into multiple sentences.
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 presence of an output schema (not shown but mentioned), the description does not need to detail return values. However, it lacks information about error behavior, performance considerations, or how to interpret the 'detailed information', making it only moderately complete for a simple read tool.
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 two required parameters (doc_id and table_id_or_name) with 0% description coverage. The tool description does not explain what these parameters represent or how to obtain them, leaving the agent without guidance on how to set them correctly.
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 the resource 'table', specifying that it returns 'schema, columns, and metadata'. This distinguishes it from sibling tools like get_row, get_column, and list_tables, which have different scopes.
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 list_tables, get_column, or get_row. It does not mention prerequisites, limitations, or exclusions, leaving the agent to infer usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_columnsC
List all columns in a table with their properties, formats, and formulas
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| limit | No | ||
| page_token | No | ||
| visible_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Array of columns. |
| href | No | API link to these results |
| next_page_token | No | If specified, an opaque token used to fetch the next page of results. |
| next_page_link | No | If specified, a link that can be used to fetch the next page of results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior fully. It only states it 'list[s] all columns' but omits key behaviors: that it supports pagination (via limit and page_token), optional filtering (visible_only), and is a read-only operation. The output schema exists but does not compensate for missing behavioral context.
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, clear sentence with no redundancy. It efficiently conveys the core purpose, even though it lacks detail in other dimensions. It is front-loaded with the action and object.
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?
Despite the presence of an output schema, the description is incomplete for a tool with 5 parameters (2 required, 3 optional). It does not explain pagination behavior, the effect of 'visible_only', or how to use the tool effectively. More context is needed for correct invocation.
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 0% description coverage, and the tool description adds no parameter-specific information. It does not explain that 'doc_id' is the document identifier, 'table_id_or_name' selects the table, or how 'limit', 'page_token', and 'visible_only' affect results.
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 uses a specific verb ('list') and resource ('columns in a table'), and specifies the scope ('all'). It distinguishes from sibling tools like 'get_column' (single column) and 'list_tables' (tables). The addition of 'with their properties, formats, and formulas' clarifies the return content.
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 when to use 'get_column' for a single column or how pagination works. There are no prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_docsB
List Coda docs accessible by the user (defaults to your own unpublished docs) - returns docs in reverse chronological order by most recent activity
| Name | Required | Description | Default |
|---|---|---|---|
| is_owner | No | ||
| is_published | No | ||
| query | No | ||
| source_doc | No | ||
| is_starred | No | ||
| in_gallery | No | ||
| workspace_id | No | ||
| folder_id | No | ||
| limit | No | ||
| page_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Array of Coda docs. |
| href | No | API link to these results |
| next_page_token | No | If specified, an opaque token used to fetch the next page of results. |
| next_page_link | No | If specified, a link that can be used to fetch the next page of results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses ordering and default filters, but lacks details on pagination, rate limits, or what fields are returned, with no annotations to supplement.
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?
Single sentence is efficient and front-loaded, but could be slightly expanded without verbosity to cover key missing info.
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?
Incomplete for a 10-parameter tool with no schema descriptions; missing pagination, parameter explanations, and output schema 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?
Only mentions defaults for two parameters; the other eight parameters (query, workspace_id, etc.) are not explained despite zero schema description 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?
Clearly states it lists Coda docs accessible by the user with defaults and ordering, distinguishing it from sibling tools like create_doc or get_doc_info.
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?
Provides context on defaults but no explicit when-to-use or when-not-to-use guidance compared to alternatives like list_pages or list_tables.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_formulasC
List all named formulas in a Coda doc with their names and IDs
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| limit | No | ||
| page_token | No | ||
| sort_by | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | List of named formulas in the doc. |
| href | No | API link to these results |
| next_page_token | No | If specified, an opaque token used to fetch the next page of results. |
| next_page_link | No | If specified, a link that can be used to fetch the next page of results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states that the tool lists formulas with names and IDs, but fails to disclose pagination behavior, sorting effects, or error handling. Minimal transparency beyond the basic 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?
Single sentence that efficiently conveys the core purpose. However, it lacks structure and could benefit from breaking out parameter details or usage context.
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 has 4 parameters including pagination and sorting, the description is incomplete. It does not explain how limit, page_token, or sort_by affect results. The output schema exists but does not compensate for missing parameter 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 0%, and the tool description does not explain any of the 4 parameters (doc_id, limit, page_token, sort_by). The description adds no semantic value beyond the schema's types and titles.
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?
Description clearly states action (List), resource (named formulas), and scope (in a Coda doc). It also specifies what is included (names and IDs), distinguishing it from sibling tools like get_formula or list_tables.
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?
No guidance on when to use this tool versus alternatives (e.g., get_formula for a single formula). No prerequisites or exclusions are provided, leaving the agent to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesB
List all pages in a Coda doc with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| limit | No | ||
| page_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | List of pages. |
| href | No | API link to these results. |
| next_page_token | No | Token for fetching the next page of results. |
| next_page_link | No | Link to the next page of results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It indicates a read operation but does not mention side effects, authentication needs, rate limits, or the exact mechanism of pagination. The term 'pagination support' is vague.
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 sentence of 10 words, front-loading the main action. Every word is meaningful, and there is no extraneous information. It is optimally 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?
The description is minimal but covers the core functionality. Since an output schema exists, the lack of return value details is partially mitigated. However, it omits how to use the pagination tokens and does not mention the document identification prerequisite.
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 0%, and the description does not elaborate on any parameter. It only hints at pagination but does not explain doc_id, limit, or page_token. The description fails to add meaning beyond the schema's parameter names and types.
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), the resource (pages), and the scope (in a Coda doc), and mentions pagination support. It effectively distinguishes from sibling tools like get_page (single page) and create_page.
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, nor does it mention any prerequisites or constraints. It lacks explicit exclusions or context for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rowsC
List rows in a table with optional filtering, sorting, and pagination - returns row data with cell values
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| query | No | ||
| sort_by | No | ||
| use_column_names | No | ||
| value_format | No | ||
| visible_only | No | ||
| limit | No | ||
| page_token | No | ||
| sync_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Array of rows. |
| href | No | API link to these results |
| next_page_token | No | If specified, an opaque token used to fetch the next page of results. |
| next_page_link | No | If specified, a link that can be used to fetch the next page of results. |
| next_sync_token | No | If specified, an opaque token that can be passed back later to retrieve new results that match the parameters specified when the sync token was created. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only mentions the basic function and return of row data with cell values, but does not disclose behavioral traits like read-only nature, potential large responses, pagination details, or authentication requirements. This is insufficient for a tool with many 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 sentence, concise and front-loaded with the main action. Every word is relevant, but the structure is flat and misses the opportunity to present critical information in a more scannable format for an AI agent.
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 has 10 parameters, no schema descriptions, and no annotations, the description is incomplete. It does not explain parameter usage, pagination mechanism, or return format beyond 'row data with cell values'. The output schema is present but not referenced. The description leaves many questions unanswered.
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 0%, so the description must compensate. However, it only mentions 'optional filtering, sorting, and pagination' without mapping to specific parameters (query, sort_by, limit, page_token). The parameter names are somewhat self-explanatory, but the description adds no semantic value beyond the schema.
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 rows), the resource (table), and optional capabilities (filtering, sorting, pagination). It distinguishes from siblings like get_row (single row) and delete_row. However, it could be slightly more explicit about the output structure.
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?
No explicit guidance on when to use this tool versus alternatives (e.g., get_row for a single row). The description implies it is for large or filtered datasets but does not provide context for when-not or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesC
List all tables and views in a Coda doc with optional filtering and sorting
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| limit | No | ||
| page_token | No | ||
| sort_by | No | ||
| table_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | Array of table references. |
| href | No | API link to these results |
| next_page_token | No | If specified, an opaque token used to fetch the next page of results. |
| next_page_link | No | If specified, a link that can be used to fetch the next page of results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are missing, so the description must disclose behavior. It does not mention pagination despite the presence of limit and page_token parameters, nor does it describe authentication needs or rate limits. The term 'optional filtering and sorting' is vague.
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 concise sentence that front-loads the main action. However, it could include a bit more context without becoming verbose.
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 has 5 parameters, no schema descriptions, and an output schema that might explain return values, the description still lacks critical usage context like pagination behavior, sorting options, and filtering details. The agent would need to rely on parameter names alone.
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 0%, so the description should explain parameters. It mentions 'optional filtering and sorting' but does not map to specific parameters like table_types or sort_by. The meaning of limit, page_token, and sort_by is not clarified beyond the schema titles.
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 lists all tables and views in a Coda doc, with optional filtering and sorting. It distinguishes from sibling tools that list other resources.
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?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or limitations. The description only states what it does, not when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_buttonA
Trigger a button column in a table row to execute its automation or action (buttons can run formulas, modify data, or trigger workflows)
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| row_id_or_name | Yes | ||
| column_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| row_id | Yes | ID of the row where the button exists. |
| column_id | Yes | ID of the column where the button exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral traits: buttons can run formulas, modify data, or trigger workflows, indicating the action is not trivial and may have side effects. No annotations exist, so the description carries the full burden and does so well.
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-formed sentence with no unnecessary words. It front-loads the core action and follows with context in parentheses. Every part is useful.
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?
The tool has 4 required parameters and an output schema. The description explains the behavior but lacks details on parameter usage (e.g., identifier formats). It is minimally adequate for a simple tool but leaves gaps.
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 4 parameters with clear titles but zero description coverage. The tool description does not explain any parameter further, leaving the agent to rely on parameter names alone, which may be insufficient for correct invocation.
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: triggering a button column in a table row to execute its automation or action. It distinguishes from sibling tools by focusing on button-specific functionality, which is not covered by other row/table 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?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives (e.g., update_row, delete_row), nor does it specify any prerequisites or restrictions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_docC
Update properties of a Coda doc including title and icon
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| title | No | ||
| icon_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; despite describing a mutating operation, the description lacks details on side effects, permissions, or immediate/sync behavior.
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 very concise (12 words) but omits important context, making it borderline under-specified.
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?
While an output schema exists, the description fails to mention return values, and with no annotations or parameter details, the tool definition is incomplete.
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?
With 0% schema description coverage, the description should explain all parameters but only mentions title and icon, omitting the required doc_id and the meaning of null values.
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 updates Coda doc properties including title and icon, and the verb 'update' distinguishes from create/delete siblings.
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?
No guidance on when to use or avoid this tool, nor any comparison with sibling tools like create_doc or delete_doc.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_pageB
Update properties and content of a page including name, subtitle, icon, visibility, and HTML/markdown content
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| page_id_or_name | Yes | ||
| name | No | ||
| subtitle | No | ||
| icon_name | No | ||
| image_url | No | ||
| is_hidden | No | ||
| content_update | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| id | Yes | ID of the updated page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose behavioral traits such as whether the operation is destructive, whether omitted fields are left unchanged or set to null, permission requirements, or rate limits. For a mutation tool, 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 concise sentence with no redundancy. However, it could be better structured by separating the primary purpose from the list of modifiable fields.
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 (8 parameters, nested object) and lack of annotations, the description is insufficient. It does not clarify the return value structure, the effect of the insertion_mode parameter, or the behavior when optional fields are omitted. The description leaves many usage details unspecified.
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 0%, placing the burden on the description. The description lists only a subset of parameters (name, subtitle, icon, visibility, content) and omits critical ones like doc_id, page_id_or_name, image_url, and the nested structure of content_update. It does not explain the meaning or constraints of the required identifiers.
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 'Update' and the resource 'page', and lists specific properties (name, subtitle, icon, visibility, HTML/markdown content), making the purpose unmistakable and distinct from sibling tools like create_page or delete_page.
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 the tool is for modifying an existing page, but it does not explicitly state when to use it versus alternatives (e.g., create_page for new pages, get_page for retrieval). No guidance on prerequisites or contexts where the tool should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_rowC
Update cell values in a specific row by its ID or name
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| row_id_or_name | Yes | ||
| row | Yes | ||
| disable_parsing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| id | Yes | ID of the updated row. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It fails to mention whether the update overwrites the entire row, what happens if the row does not exist, or any side effects. No mention of permissions or rate limits.
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, front-loaded sentence with no extraneous words. Every word contributes to 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?
Despite having an output schema (not shown), the description omits information about return values, error conditions, and necessary prerequisites. For a tool with 5 parameters, the description is insufficiently complete for correct invocation.
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 0%, and the description only adds meaning for the row_id_or_name parameter ('by its ID or name'). It does not explain the row parameter structure (RowEdit) or the disable_parsing parameter, leaving the agent without critical information.
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 'Update' and the resource 'cell values in a specific row by its ID or name', distinguishing it from sibling tools like delete_row (delete) or get_row (read). It is specific about the identification method.
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?
No guidance on when to use this tool versus alternatives like upsert_rows or delete_row. The description does not mention when not to use it or provide context for choosing between similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_rowsB
Insert new rows or update existing rows in a table based on key columns - ideal for bulk operations
| Name | Required | Description | Default |
|---|---|---|---|
| doc_id | Yes | ||
| table_id_or_name | Yes | ||
| rows_data | Yes | ||
| key_columns | No | ||
| disable_parsing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| request_id | Yes | An arbitrary unique identifier for this request. |
| added_row_ids | No | Row IDs for rows that will be added. Only applicable when keyColumns is not set or empty. |
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 that the tool can insert or update rows, but it does not explain behavior when key_columns is null, what happens if values conflict, or any side effects like overwriting. The description is minimally transparent but lacks depth.
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, front-loaded sentence that efficiently conveys the core purpose. However, it could benefit from a brief breakdown of key parameters for improved structure.
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 has 5 parameters, no schema descriptions, and an output schema (not shown), the description should provide more context about required fields (doc_id, table_id_or_name), the nature of RowEdit, and the role of disable_parsing. The current description is insufficient for an agent to reliably construct valid calls.
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 0%, meaning the input schema provides no descriptions for the 5 parameters. The tool description only mentions 'key columns' and 'bulk operations,' adding little meaning beyond the parameter names. It does not explain how rows_data relates to key_columns or the format of edits.
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 ('insert new rows or update existing rows'), the resource ('table'), the mechanism ('based on key columns'), and the use case ('ideal for bulk operations'). It effectively distinguishes this from single-row tools like 'update_row' or 'delete_row'.
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 mentions 'ideal for bulk operations' but does not provide explicit guidance on when to use this tool over siblings, nor does it state prerequisite conditions (e.g., table must exist) or when not to use it. The context is implied but not fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Get information about the current authenticated Coda user including name, email, and scoped token info
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Name of the user. |
| login_id | Yes | Email address of the user. |
| type | Yes | The type of this resource. |
| scoped | Yes | True if the token used is scoped to this user. |
| token_name | Yes | Name of the API token if it has one. |
| href | Yes | API link to the user. |
| workspace | Yes | The user's default workspace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must carry the burden. It mentions the tool is read-only and returns specific information, but does not detail authentication requirements, rate limits, or side effects. For a zero-parameter read tool, this is adequate but minimal.
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, front-loaded sentence that efficiently conveys the tool's purpose. Every word adds value.
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 zero parameters and the existence of an output schema, the description sufficiently explains what the tool returns (name, email, scoped token info). No additional 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 tool has no parameters, and the input schema is empty with 100% coverage. The description does not need to add parameter details, and the baseline for zero parameters is 4.
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 gets information about the current authenticated Coda user, listing specific fields (name, email, scoped token info). It is distinct from sibling tools which focus on documents, pages, and rows.
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 use when needing current user info, but lacks explicit when-not or alternative tools. However, no sibling tool serves the same purpose, making usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Every tool targets a distinct resource and operation (doc, page, table, row, column, formula, export, user). There is no ambiguity between tools; even related tools like delete_row and delete_rows are clearly differentiated by singular vs plural.
Most tools follow a consistent verb_noun pattern (e.g., create_doc, list_pages, get_row). Minor deviations include 'whoami' and 'push_button', but overall the naming is predictable and readable.
26 tools cover a broad domain (docs, pages, tables, rows, columns, formulas, exports, user). While slightly on the higher side, the count is justified by the complexity of Coda's API and does not feel excessive.
Significant gaps exist: there is no single create_row tool (only upsert_rows), columns are read-only (no create/update/delete column), and formulas have no mutation tools. The surface is incomplete for basic CRUD on rows and columns.
Maintenance
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
AI access to Quadratic spreadsheets: open files, run Python/SQL, query connected databases.
AI workspace for you, your team, and every agent. Tables, docs (images, 4K video), formulas.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables AI assistants to interact with Coda documents, allowing operations like listing, creating, reading, updating, and duplicating pages.1947964MIT
- FlicenseAqualityDmaintenanceEnables interaction with Grist documents, workspaces, and records via the Model Context Protocol. It supports comprehensive operations including SQL querying, schema management, and record CRUD functionality.111223
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact directly with Google Sheets to create, read, and edit spreadsheets through the Model Context Protocol. It supports a wide range of actions including cell manipulation, row and column management, and sheet organization.178MIT

Cyoda Calculation Node MCPofficial
AlicenseBqualityDmaintenanceEnables AI assistants to interact with Cyoda platform entities and workflows through the Model Context Protocol, supporting entity management, workflow execution, and data synchronization.131Apache 2.0
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/TJC-LP/coda-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server