Skip to main content
Glama

Coda MCP Server

PyPI version Python versions License Tests

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_case field names (e.g., browser_link instead of browserLink) 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_export and get_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_rows

  • Update 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

  1. Coda API Key: Get your API token from Coda Account Settings

  2. Python 3.11+ (including 3.14): Required for the MCP server

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-server

Option 2: Install from Source

  1. Clone the repository

    git clone https://github.com/TJC-LP/coda-mcp-server.git
    cd coda-mcp-server
  2. Install dependencies

    uv sync
  3. Set your API key as an environment variable (see Configuration section below)

Configuration

For using with Claude Code during development:

  1. 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"
  2. MCP configuration is already included!

    The repository includes a .mcp.json file 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.

  3. 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 -- claude

Option 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.json

  • Windows: %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-here with 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:

  1. Restart Claude Desktop

  2. Look for the settings icon in the bottom of your conversation

  3. Click it and verify that "coda" is listed as a connected server

  4. You should see 26 available Coda tools when you click coda in 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 docs

  • get_doc_info(doc_id) - Get document metadata

  • create_doc(title, source_doc?, timezone?, ...) - Create new document

  • update_doc(doc_id, title?, icon_name?) - Update document properties

  • delete_doc(doc_id) - Delete a document

Page Operations

  • list_pages(doc_id, limit?, page_token?) - List pages in a doc

  • get_page(doc_id, page_id_or_name) - Get page details

  • create_page(doc_id, name, subtitle?, ...) - Create new page

  • update_page(doc_id, page_id_or_name, ...) - Update page properties

  • delete_page(doc_id, page_id_or_name) - Delete a page

  • begin_page_content_export(doc_id, page_id_or_name, output_format?) - Start async page export

  • get_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 tables

  • get_table(doc_id, table_id_or_name) - Get table details

  • list_columns(doc_id, table_id_or_name, ...) - List table columns

  • get_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 rows

  • get_row(doc_id, table_id_or_name, row_id_or_name, ...) - Get specific row

  • upsert_rows(doc_id, table_id_or_name, rows_data, ...) - Insert or update rows

  • update_row(doc_id, table_id_or_name, row_id_or_name, row, ...) - Update single row

  • delete_row(doc_id, table_id_or_name, row_id_or_name) - Delete single row

  • delete_rows(doc_id, table_id_or_name, row_ids) - Delete multiple rows

  • push_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 formulas

  • get_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.toml

Running 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.py

Troubleshooting

Common Issues

  1. "API Error 401: Unauthorized"

    • Check that your CODA_API_KEY environment variable is set correctly

    • Verify with: echo $CODA_API_KEY

    • Ensure your API key has the necessary permissions

  2. "Rate limit exceeded"

    • Coda API has rate limits; wait for the specified time before retrying

    • The server includes automatic rate limit detection

  3. Boolean parameters not working

    • The server automatically converts boolean values to strings ("true"/"false")

    • This is handled internally, just use boolean values normally

  4. Page export issues

    • Use the two-step export workflow: begin_page_content_export then get_page_content_export_status

    • The 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 tools
begin_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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
page_id_or_nameYes
output_formatNohtml

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesThe identifier of this export request.
statusYesThe status of this export.
hrefYesThe URL that reports the status of this export. Poll this URL to get the content URL when the export has completed.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
source_docNo
timezoneNo
folder_idNo
initial_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesID of the Coda doc.
typeYesThe type of this resource.
hrefYesAPI link to the Coda doc.
browser_linkYesBrowser-friendly link to the Coda doc.
iconNoInfo about the icon.
nameYesName of the doc.
ownerYesEmail address of the doc owner.
owner_nameYesName of the doc owner.
doc_sizeNoThe number of components within a Coda doc.
source_docNoReference to a Coda doc from which this doc was copied, if any.
created_atYesTimestamp for when the doc was created.
updated_atYesTimestamp for when the doc was last modified.
publishedNoInformation about the publishing state of the document.
folderYesReference to the folder containing this doc.
workspaceYesReference to the workspace containing this doc.
workspace_idYesID of the Coda workspace containing this doc.
folder_idYesID of the Coda folder containing this doc.
request_idYesAn arbitrary unique identifier for this request.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
nameYes
subtitleNo
icon_nameNo
image_urlNo
parent_page_idNo
page_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
idYesID of the created page.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
page_id_or_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
idYesID of the page to be deleted.

TDQS

B3/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
row_id_or_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
idYesID of the row to be deleted.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
row_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
row_idsYesRow IDs to delete.

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
column_id_or_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesID of the column.
typeYesThe type of this resource.
hrefYesAPI link to the column.
nameYesName of the column.
displayNoWhether the column is the display column.
calculatedNoWhether the column has a formula set on it.
formulaNoFormula on the column.
default_valueNoDefault value formula for the column.
formatYesFormat of the column.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesID of the Coda doc.
typeYesThe type of this resource.
hrefYesAPI link to the Coda doc.
browser_linkYesBrowser-friendly link to the Coda doc.
iconNoInfo about the icon.
nameYesName of the doc.
ownerYesEmail address of the doc owner.
owner_nameYesName of the doc owner.
doc_sizeNoThe number of components within a Coda doc.
source_docNoReference to a Coda doc from which this doc was copied, if any.
created_atYesTimestamp for when the doc was created.
updated_atYesTimestamp for when the doc was last modified.
publishedNoInformation about the publishing state of the document.
folderYesReference to the folder containing this doc.
workspaceYesReference to the workspace containing this doc.
workspace_idYesID of the Coda workspace containing this doc.
folder_idYesID of the Coda folder containing this doc.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
formula_id_or_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesID of the formula.
typeYesThe type of this resource.
hrefYesAPI link to the formula.
nameYesName of the formula.
parentYesParent page of the formula.
valueYesThe computed value of the formula.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
page_id_or_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesID of the page.
typeYesThe type of this resource.
hrefYesAPI link to the page.
browser_linkYesBrowser-friendly link to the page.
nameYesName of the page.
subtitleNoSubtitle of the page.
iconNoIcon for the page.
imageNoCover image for the page.
content_typeYesThe type of content on the page.
is_hiddenYesWhether the page is hidden in the UI.
is_effectively_hiddenYesWhether the page or any of its parents is hidden in the UI.
parentNoReference to the parent page.
childrenYesChild pages of this page.

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
page_id_or_nameYes
request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesThe identifier of this export request.
statusYesThe status of this export.
hrefYesThe URL that reports the status of this export.
download_linkNoOnce 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.
errorNoMessage describing an error, if this export failed.
contentNoThe 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

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
row_id_or_nameYes
use_column_namesNo
value_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesID of the row.
typeYesThe type of this resource.
hrefYesAPI link to the row.
nameYesThe display name of the row, based on its identifying column.
indexYesIndex of the row within the table.
browser_linkYesBrowser-friendly link to the row.
created_atYesTimestamp for when the row was created.
updated_atYesTimestamp for when the row was last modified.
valuesYesValues for a specific row, represented as a hash of column IDs (or names with `useColumnNames`) to values.

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesID of the table.
typeYesThe type of this resource.
table_typeYesType of the table.
hrefYesAPI link to the table.
browser_linkYesBrowser-friendly link to the table.
nameYesName of the table.
parentYesParent page of the table.
parent_tableNoParent table if this is a view.
display_columnYesThe display column for the table.
row_countYesTotal number of rows in the table.
sortsYesAny sorts applied to the table.
layoutYesLayout type of the table or view.
filterNoDetailed information about the filter formula for the table, if applicable.
created_atYesTimestamp for when the table was created.
updated_atYesTimestamp for when the table was last modified.
view_idNoID of the view if this is a view.

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
limitNo
page_tokenNo
visible_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesArray of columns.
hrefNoAPI link to these results
next_page_tokenNoIf specified, an opaque token used to fetch the next page of results.
next_page_linkNoIf specified, a link that can be used to fetch the next page of results.

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
is_ownerNo
is_publishedNo
queryNo
source_docNo
is_starredNo
in_galleryNo
workspace_idNo
folder_idNo
limitNo
page_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesArray of Coda docs.
hrefNoAPI link to these results
next_page_tokenNoIf specified, an opaque token used to fetch the next page of results.
next_page_linkNoIf specified, a link that can be used to fetch the next page of results.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
limitNo
page_tokenNo
sort_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesList of named formulas in the doc.
hrefNoAPI link to these results
next_page_tokenNoIf specified, an opaque token used to fetch the next page of results.
next_page_linkNoIf specified, a link that can be used to fetch the next page of results.

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
limitNo
page_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesList of pages.
hrefNoAPI link to these results.
next_page_tokenNoToken for fetching the next page of results.
next_page_linkNoLink to the next page of results.

TDQS

B3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
queryNo
sort_byNo
use_column_namesNo
value_formatNo
visible_onlyNo
limitNo
page_tokenNo
sync_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesArray of rows.
hrefNoAPI link to these results
next_page_tokenNoIf specified, an opaque token used to fetch the next page of results.
next_page_linkNoIf specified, a link that can be used to fetch the next page of results.
next_sync_tokenNoIf 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

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
limitNo
page_tokenNo
sort_byNo
table_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsYesArray of table references.
hrefNoAPI link to these results
next_page_tokenNoIf specified, an opaque token used to fetch the next page of results.
next_page_linkNoIf specified, a link that can be used to fetch the next page of results.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
row_id_or_nameYes
column_id_or_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
row_idYesID of the row where the button exists.
column_idYesID of the column where the button exists.

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
titleNo
icon_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
page_id_or_nameYes
nameNo
subtitleNo
icon_nameNo
image_urlNo
is_hiddenNo
content_updateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
idYesID of the updated page.

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
row_id_or_nameYes
rowYes
disable_parsingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
idYesID of the updated row.

TDQS

C2.9/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
doc_idYes
table_id_or_nameYes
rows_dataYes
key_columnsNo
disable_parsingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
request_idYesAn arbitrary unique identifier for this request.
added_row_idsNoRow IDs for rows that will be added. Only applicable when keyColumns is not set or empty.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYesName of the user.
login_idYesEmail address of the user.
typeYesThe type of this resource.
scopedYesTrue if the token used is scoped to this user.
token_nameYesName of the API token if it has one.
hrefYesAPI link to the user.
workspaceYesThe user's default workspace.

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

B3.2/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness2/5

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

ActivityInactive
ResponsivenessUnresponsive

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    178
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to interact with Cyoda platform entities and workflows through the Model Context Protocol, supporting entity management, workflow execution, and data synchronization.
    13
    1
    Apache 2.0

Latest Blog Posts

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