Skip to main content
Glama
benpalmer1

Gorgias MCP Server

by benpalmer1

Gorgias MCP Server

An MCP server that exposes the full Gorgias helpdesk API to AI assistants.


What is this?

Gorgias MCP Server is a Model Context Protocol server that gives AI assistants -- Claude, and any other MCP-compatible client -- complete access to the Gorgias helpdesk platform. It ships with 112 tools: 3 high-level "smart" tools that handle the most common workflows, plus 109 raw API tools covering every Gorgias REST endpoint.

Connect it to Claude Desktop (or any MCP client) and you can search tickets, read conversations, pull analytics, manage customers, and operate your entire helpdesk through natural language.


Related MCP server: Respona Dashboard MCP Server

Example Usage

You: How many tickets did we get last week?

Claude uses gorgias_smart_stats

You received 142 tickets last week, down 12% from the prior week. Top channels: email (89), chat (31), phone (22).

You: Show me the open ones about refunds

Claude uses gorgias_smart_search

Found 8 open tickets matching "refund":

  • #4521 — "Refund not received" (Alice Johnson, 2 days ago)

  • #4518 — "Wrong item, want refund" (Bob Smith, 3 days ago)

  • ...

You: What's the conversation in ticket #4521?

Claude uses gorgias_smart_get_ticket

Ticket #4521 — "Refund not received" (Open, Normal priority) Customer Alice Johnson (alice@example.com), assigned to Sarah

  • Mar 24, Alice (customer): "Hi, I returned my order 2 weeks ago but haven't received my refund yet..."

  • Mar 24, Sarah (agent): "I can see your return was received. Let me check the refund status..."

  • Mar 25, Alice (customer): "Any update?"


Smart Tools

The three smart tools are the primary interface. They compose multiple API calls, cache reference data, and project responses into clean LLM-friendly formats.

Tool

Description

gorgias_smart_search

Multi-strategy ticket search. Auto-detects emails, ticket IDs (#12345), customer names, view names, and topic keywords. Falls back through progressively broader search strategies to maximise result quality.

gorgias_smart_get_ticket

Retrieves a ticket with its full conversation thread. Fetches ticket and messages in parallel, sorts chronologically, and projects to a compact format stripped to essential fields.

gorgias_smart_stats

Analytics with automatic defaults, input validation, dimension resolution, and agent name-to-ID resolution. Covers volume, performance, quality, automation, voice, and breakdown scopes.

These handle the common 80% of use cases. The 109 raw tools provide direct API access for everything else -- bulk operations, custom field management, rule configuration, and more.


Installation

Requires Node.js 20 or later. (Node 18 reached end-of-life in April 2025.)

npm install -g gorgias-mcp-server

Or run directly with npx:

npx gorgias-mcp-server

Configuration

Three environment variables are required:

Variable

Description

Example

GORGIAS_DOMAIN

Your Gorgias subdomain or full URL

mycompany or mycompany.gorgias.com

GORGIAS_EMAIL

Email address of the API user

admin@mycompany.com

GORGIAS_API_KEY

REST API key

a1b2c3d4e5f6...

Getting your API key

  1. Log in to your Gorgias helpdesk

  2. Go to Settings > REST API

  3. Click Add a REST API key

  4. Copy the generated key

The server accepts flexible domain formats: mycompany, mycompany.gorgias.com, or https://mycompany.gorgias.com all work.

Access levels

Control which tools are exposed to the AI with GORGIAS_ACCESS_LEVEL:

Level

Tools

Use Case

readonly

50 tools (all read/search/list/smart tools)

Analytics bots, dashboards, monitoring

agent

61 tools (readonly + reply, close, tag, reassign)

Customer-facing support chatbots

admin

All 112 tools (default)

Internal admin tools, full API access

GORGIAS_ACCESS_LEVEL=readonly   # Only read operations exposed
GORGIAS_ACCESS_LEVEL=agent      # Read + support agent workflow
GORGIAS_ACCESS_LEVEL=admin      # Full access (default if not set)

The agent tier allows the chatbot to: create tickets, reply to customers, update messages, update ticket status/priority/assignee, manage ticket tags and custom fields, and update customer field values. It blocks: deletions, account settings, rules, macros, integrations, user management, and team management.

Tools that aren't registered at a given access level are completely invisible to the AI — it cannot see or call them.


MCP Client Setup

Claude Desktop

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "gorgias": {
      "command": "npx",
      "args": ["gorgias-mcp-server"],
      "env": {
        "GORGIAS_DOMAIN": "mycompany",
        "GORGIAS_EMAIL": "admin@mycompany.com",
        "GORGIAS_API_KEY": "your-api-key-here",
        "GORGIAS_ACCESS_LEVEL": "agent"
      }
    }
  }
}

The config file is located at:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Claude Code (CLI)

Add the server to your project using claude mcp add-json:

claude mcp add-json gorgias '{
  "command": "npx",
  "args": ["gorgias-mcp-server"],
  "env": {
    "GORGIAS_DOMAIN": "mycompany",
    "GORGIAS_EMAIL": "admin@mycompany.com",
    "GORGIAS_API_KEY": "your-api-key-here",
    "GORGIAS_ACCESS_LEVEL": "readonly"
  }
}' -s project

This creates a .mcp.json file in the project root. You can also add it at user scope with -s user.

Alternatively, create .mcp.json manually in your project root:

{
  "mcpServers": {
    "gorgias": {
      "command": "npx",
      "args": ["gorgias-mcp-server"],
      "env": {
        "GORGIAS_DOMAIN": "mycompany",
        "GORGIAS_EMAIL": "admin@mycompany.com",
        "GORGIAS_API_KEY": "your-api-key-here",
        "GORGIAS_ACCESS_LEVEL": "readonly"
      }
    }
  }
}

Note: You can also use claude mcp add directly. All flags (--transport, --env, --scope) must come before the server name, and -- separates the name from the command:

claude mcp add --transport stdio --scope project \
  --env GORGIAS_DOMAIN=mycompany \
  --env GORGIAS_EMAIL=admin@mycompany.com \
  --env GORGIAS_API_KEY=your-api-key-here \
  --env GORGIAS_ACCESS_LEVEL=readonly \
  gorgias -- npx gorgias-mcp-server

For most users, claude mcp add-json (shown above) is simpler.

Note: If you add the MCP server mid-session, you may need to restart Claude Code (/quit and relaunch) for the tools to appear. Verify connection with claude mcp list.

Programmatic Usage (Web Apps & Chatbots)

The package exports a createGorgiasServer() factory for embedding in your own application. This is how you integrate Gorgias MCP into a web application chatbot backend.

npm install gorgias-mcp-server @modelcontextprotocol/sdk

Express / Node.js

import express from "express";
import { randomUUID } from "node:crypto";
import { createGorgiasServer } from "gorgias-mcp-server";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const app = express();
app.use(express.json());

// Create a transport and server per session
const sessions = new Map<string, StreamableHTTPServerTransport>();

// Production: add authentication, CORS, and rate limiting to this endpoint.
app.post("/mcp", async (req, res) => {
  const sessionId = req.headers["mcp-session-id"] as string | undefined;

  if (sessionId && sessions.has(sessionId)) {
    // Existing session — route to its transport
    await sessions.get(sessionId)!.handleRequest(req, res, req.body);
    return;
  }

  // New session — create a server locked to the "agent" tier
  const server = createGorgiasServer({
    domain: process.env.GORGIAS_DOMAIN!,
    email: process.env.GORGIAS_EMAIL!,
    apiKey: process.env.GORGIAS_API_KEY!,
    accessLevel: "agent",
  });

  const transport = new StreamableHTTPServerTransport({
    sessionIdGenerator: () => randomUUID(),
  });

  transport.onclose = () => {
    if (transport.sessionId) sessions.delete(transport.sessionId);
  };

  await server.connect(transport);
  if (transport.sessionId) sessions.set(transport.sessionId, transport);
  await transport.handleRequest(req, res, req.body);
});

app.listen(3000);

Stateless (Serverless / Edge)

For serverless environments where you cannot maintain in-memory sessions:

import { createGorgiasServer } from "gorgias-mcp-server";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

// Conceptual pattern — adapt to your framework's handler signature.
// Maps to: Vercel (req, res), Netlify/AWS Lambda (event, context), Cloudflare Workers (request).
export async function handler(req, res) {
  const server = createGorgiasServer({
    domain: process.env.GORGIAS_DOMAIN!,
    email: process.env.GORGIAS_EMAIL!,
    apiKey: process.env.GORGIAS_API_KEY!,
    accessLevel: "readonly",
  });

  const transport = new StreamableHTTPServerTransport({
    sessionIdGenerator: undefined, // stateless mode
  });

  await server.connect(transport);
  await transport.handleRequest(req, res, req.body);
}

Exported API

import {
  createGorgiasServer,      // Factory — returns a configured McpServer
  type GorgiasServerConfig,
  type AccessLevel,           // "readonly" | "agent" | "admin"
  type AccessFilterStats,     // { registeredCount, skippedCount }
  type GorgiasClientConfig,
  isToolAllowed,              // Check if a tool passes an access level
  getAccessFilterStats,       // Read tool registration counts from a server
  AGENT_WRITE_TOOLS,          // Set of tool names allowed in agent tier
  GorgiasError,               // Base error class
  GorgiasApiError,            // API-specific error (status, endpoint, body)
} from "gorgias-mcp-server";

Available Tools

112 tools organised by category:

Category

Count

Description

Smart Tools

3

Intelligent search, ticket detail, and analytics

Tickets

13

List, get, create, update, delete tickets; manage tags and custom fields on tickets

Customers

12

List, get, create, update, delete customers; merge customers; manage data and field values

Messages

6

List messages by ticket, list all messages, get, create, update, delete

Tags

7

Full CRUD, bulk delete, and tag merging

Views

7

Full CRUD; list and search view items

Reporting

1

Retrieve reporting data (the legacy statistics endpoints have been removed)

Users

5

User management and lookup

Teams

5

Team management

Rules

6

Automation rule CRUD and management

Macros

7

Macro template CRUD and management

Integrations

5

Integration configuration and management

Custom Fields

5

Custom field definition CRUD

Satisfaction Surveys

4

Survey configuration and results

Jobs

5

Background job tracking and management

Events

2

Event retrieval

Voice Calls

7

Voice call management and logging

Widgets

5

Chat widget configuration

Search

1

Raw full-text search

Account

4

Account settings and configuration

Files

2

File upload and management


Terminology & Industry Optimisation

The smart tools use topic keyword detection to route queries to the right search strategy. The default keyword set is optimised for ecommerce customer support in Australia, the US, and the UK, covering carriers, regional spelling, payment providers, tax terms, consumer law bodies, and 150+ common ecommerce terms.

To customise for other industries (e.g. SaaS, healthcare, finance), edit the TOPIC_KEYWORDS set in src/tools/smart-search.ts. The keywords should reflect the vocabulary your customers actually use when contacting support.


Security

  • The error sanitiser strips credentials, tokens, vendor API key prefixes (Stripe sk_live_, Slack xoxb-, GitHub ghp_, AWS AKIA…, etc.), email addresses, internal/loopback IPs, and sensitive filesystem paths from all error messages before they reach the LLM.

  • The HTTP client enforces a 30-second per-request timeout and caps the Retry-After header at 60 seconds, so a stalled or misconfigured upstream cannot freeze a tool call.

  • Access levels (readonly, agent, admin) control which tools are exposed. Start with readonly unless write access is needed. The default is admin if GORGIAS_ACCESS_LEVEL is not set — explicitly set it for production.

  • In agent mode, the AI can send customer-facing messages and modify tickets. Make sure this is intentional before enabling it.

  • Customer data (ticket messages, names, email addresses) is passed to the LLM as part of normal MCP operation. If you handle sensitive data, factor this into your compliance review.

  • Reference data (users, tags, views, custom fields, teams) is cached in-process for 10 minutes to reduce API calls. The cache is per-GorgiasClient instance and lives in plain process memory. Restart the server to flush.

  • Never commit your GORGIAS_API_KEY to source control. Use environment variables or a secret manager.


Troubleshooting

Missing required environment variables

Set GORGIAS_DOMAIN, GORGIAS_EMAIL, and GORGIAS_API_KEY. The domain accepts mycompany, mycompany.gorgias.com, or https://mycompany.gorgias.com.

401 Unauthorized / Authentication failed

  • Verify the email matches the user account that created the API key (Settings > REST API).

  • Verify the API key has not been rotated or revoked.

  • Confirm GORGIAS_DOMAIN matches the tenant where the key was issued.

403 Forbidden

  • The Gorgias REST API is gated to specific plan tiers. Check your account's plan in the Gorgias admin UI.

  • The user behind the API key may not have permission to access the resource (e.g. some endpoints require admin role).

429 Rate limited by Gorgias API

The HTTP client automatically retries 429 responses up to 3 times with exponential backoff (1s/2s/4s, plus jitter), honouring the upstream Retry-After header capped at 60 seconds. If you still see persistent 429 errors after the built-in retries, you have exceeded the leaky-bucket budget for the tenant — slow down or wait a few minutes.

Tools not appearing in the MCP client

  • Fully quit and re-launch Claude Desktop or your IDE — most clients only re-read the MCP config on restart.

  • Verify the server actually started by checking the client's MCP logs. The server logs Gorgias MCP server started — N tools registered (access level: …) to stderr.

  • Confirm GORGIAS_ACCESS_LEVEL is not unintentionally set to readonly (which hides every write tool).

  • Check claude mcp list (Claude Code CLI) to confirm registration.

Domain format errors

Accepted formats: mycompany, mycompany.gorgias.com, https://mycompany.gorgias.com. Plain http:// is rejected. Whitespace, empty strings, and internal spaces will fail at request time. The SSRF hostname allowlist enforces *.gorgias.com -- non-Gorgias hosts, raw IPs, and confusable trailing-label bypasses are rejected at startup.

Maximum allowed period size is 366 days (smart_stats / reporting)

The Gorgias reporting API enforces a 366-day maximum range per request. Split longer queries into multiple windows.

Empty or surprisingly small smart_stats results

The tool caps each query at 100 rows. Multi-agent + daily-granularity queries hit this fast (e.g. 30 days × 4 agents = 120 rows). Coarsen the granularity (week or month), shorten the date range, or use gorgias_retrieve_reporting_statistic for paginated raw access.


Architecture

  • Smart tool composition -- Smart tools orchestrate multiple API calls with caching, response projection, and fuzzy matching to deliver concise, relevant results.

  • Error sanitisation -- All errors are stripped of sensitive data (credentials, internal URLs, vendor API keys, email addresses) before being surfaced to the LLM. Walks the error.cause chain up to 5 levels deep.

  • SSRF hostname allowlist -- buildBaseUrl validates that the resolved hostname is *.gorgias.com, rejecting non-Gorgias hosts, raw IPs, and confusable bypasses.

  • In-memory TTL cache -- Reference data (users, tags, views) is cached for 10 minutes to reduce API calls during multi-step workflows.

  • Rate limit handling -- Respects the Gorgias leaky-bucket rate limiter with automatic exponential backoff (1s/2s/4s + jitter). Caps Retry-After at 60 seconds.


Development

Prerequisites

  • Node.js >= 20.0.0

Scripts

npm run build        # Compile TypeScript
npm run dev          # Compile in watch mode
npm run lint         # Run ESLint
npm run test         # Run tests once
npm run test:watch   # Run tests in watch mode

Project Structure

src/
  server.ts          # Library entry point — createGorgiasServer() factory
  index.ts           # CLI entry point (bin) — reads env vars, connects stdio
  client.ts          # Gorgias API HTTP client
  access-control.ts  # Access level gating (readonly/agent/admin)
  tool-handler.ts    # Shared error wrapper for all tool handlers
  errors.ts          # Custom error types (GorgiasError, GorgiasApiError)
  reporting-knowledge.ts  # Statistics scope/dimension/measure knowledge base
  cache.ts           # In-memory TTL cache for reference data
  projection.ts      # Response projection for LLM-friendly output
  error-sanitiser.ts # Strips sensitive data from errors
  fuzzy-match.ts     # Fuzzy name matching for smart tools
  tools/             # One module per API category + smart tools

Acknowledgments

Originally inspired by mattcoatsworth/Gorgias-MCP-Server.


Disclaimer

This is an unofficial, community-built project and is not affiliated with, endorsed by, or supported by Gorgias Inc.


License

MIT

Available Tools

112 tools
gorgias_add_ticket_tagsAdd Ticket TagsA

POST /api/tickets/{ticket_id}/tags — Add one or more tags to a ticket. This is additive — existing tags are preserved. Tags can be specified by IDs, names, or both. At least one of 'ids' or 'names' must be provided. Returns 201 with empty body on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoArray of tag IDs to add to the ticket
namesNoArray of tag names to add to the ticket (case-sensitive)
ticket_idYesThe unique ID of the ticket to add tags to

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutation (readOnlyHint=false), so the description does not need to state that. It adds useful context beyond the annotations: the operation is additive, existing tags are preserved, and on success it returns 201 with an empty body. This gives the agent expectations about side effects and response format, which are not available from the structured fields alone.

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 two sentences and front-loaded with the HTTP method and endpoint. Every sentence adds value: the first states the action and endpoint, the second explains the additive nature, accepted input formats, the required constraint, and the success response. There is no redundant content.

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?

For a simple add-tags operation, the description covers the essential aspects: endpoint, additive behavior, parameter requirements, and success response. It does not elaborate on error cases, idempotency for duplicate tags, or permission requirements, but given the straightforward nature and the presence of sibling tools, it is reasonably complete. The openWorldHint suggests potential side effects, but the description does not need to over-explain for this tool.

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 schema provides full descriptions for all three parameters, so the baseline is 3. The description goes beyond the schema by stating that at least one of 'ids' or 'names' must be provided and that they can be combined, which is a critical constraint not encoded in the JSON schema (no anyOf). This adds meaningful value to parameter understanding.

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 explicitly states 'Add one or more tags to a ticket' and identifies the HTTP endpoint, making the verb and resource specific. It also distinguishes itself from sibling tools by highlighting that the operation is additive and preserves existing tags, which is a clear differentiator from set_ticket_tags or remove_ticket_tags.

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 gives clear operational guidance: tags can be specified by IDs or names, and at least one of those fields must be provided. It also implies when to use this tool (for adding without removing) via the additive note, but it does not explicitly name alternative tools like set_ticket_tags or remove_ticket_tags, so it misses a direct exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_archive_macrosArchive Macros (Bulk)A
DestructiveIdempotent

PUT /api/macros/archive — Bulk archive multiple macros by ID. Archiving removes macros from the active list without permanently deleting them. Max 30 IDs per request. Returns per-ID results.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesList of macro IDs to archive (min: 1, max: 30 per request)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations providing destructiveHint=true and readOnlyHint=false, the description adds crucial context: archiving is not permanent deletion, max 30 IDs per request, and returns per-ID results. This goes beyond the safety profile and gives meaningful behavioral expectations.

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 that efficiently packages the HTTP method, endpoint, action, behavioral caveat, limit, and return format. No wasted words.

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?

For a one-parameter mutation with annotations, the description provides essential details: endpoint, action, non-permanent nature, request limit, and per-ID results. This is sufficient for an agent to correctly select and invoke the 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?

The schema already provides full coverage of the single 'ids' parameter with min/max constraints and description. The tool description mentions 'Max 30 IDs per request' which reinforces but does not add new meaning beyond the schema's own description.

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 states a specific verb and resource: 'Bulk archive multiple macros by ID' with the endpoint PUT /api/macros/archive. It clearly distinguishes from sibling tools like delete_macro and unarchive_macros by clarifying that archiving is non-permanent.

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 clarifies that archiving removes macros from the active list without permanent deletion, implying when to use archive vs delete. It also specifies the bulk nature and 30-ID limit. However, it does not explicitly name alternatives like unarchive_macros or delete_macro.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_bulk_update_custom_fieldsBulk Update Custom FieldsA
Idempotent

PUT /api/custom-fields — Bulk update multiple custom fields in a single request. Send an array of update objects each containing an id and the fields to change. Only id is required per item; all other fields are optional.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesArray of custom field update objects. Each must include an id

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=false and idempotentHint=true, indicating a safe-to-retry write operation. The description adds valuable partial-update semantics ('Only id is required per item; all other fields are optional'), which clarifies which fields will be changed. No contradictions with annotations.

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 two sentences long and immediately front-loads the HTTP method, endpoint, and core action. Every sentence adds value—there is no filler or redundant restatement of the title. It is appropriately sized for the tool's complexity.

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 rich input schema that documents all nested properties, the description provides the essential framing for how to construct the 'fields' array. It does not elaborate on return values or error behavior, but with annotations covering safety and idempotency, the tool is reasonably complete for an agent to invoke correctly.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds a concise summary of the array structure and the requirement that each item must contain an id, while reinforcing that other fields are optional. This goes beyond the schema's property-level descriptions by explaining the top-level usage pattern.

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 verb ('Bulk update') and resource ('custom fields') with explicit scoping ('multiple custom fields in a single request'). It distinguishes itself from the sibling gorgias_update_custom_field by emphasizing the bulk nature, leaving no ambiguity about what the tool does.

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 conveys the intended use case for batch updates ('Bulk update multiple custom fields') vs single-field updates, but it does not explicitly name alternative tools or provide when-not-to-use guidance. The context is clear enough for an agent to infer when 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.

gorgias_cancel_jobCancel JobA
DestructiveIdempotent

DELETE /api/jobs/{id} — Cancel a job by ID. Jobs can be canceled at any time, but changes already applied will not be reverted. Returns 204 No Content on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the job to cancel

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds critical context: cancellation is always allowed but does not revert already-applied changes, and a successful call returns 204 No Content. This goes beyond the structured hints and gives the agent a clear expectation of side effects.

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?

Two sentences, front-loaded with the HTTP method and action, and no filler. Every clause adds meaningful signal: the action, the cancellation timing, the non-revert warning, and the success response.

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?

For a simple one-parameter cancel operation with no output schema, the description covers the essential behavioral contract: what happens on success, side effects, and the fact that cancellation is unrestricted. Combined with annotations, it provides a complete picture.

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 already describes the only parameter 'id' as 'The unique ID of the job to cancel' with 100% coverage. The description simply says 'by ID', adding no additional semantic nuance. Baseline 3 is appropriate given high schema 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?

The description states exactly what the tool does: 'Cancel a job by ID.' It uses a specific verb (cancel) and resource (job), and clearly distinguishes it from sibling tools like get_job, create_job, or update_job. The HTTP method 'DELETE' reinforces the action.

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 provides context on when cancellation is appropriate ('Jobs can be canceled at any time') and a key caveat ('changes already applied will not be reverted'). It doesn't explicitly name alternative tools for similar actions, but the purpose is clear enough that an agent would know when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_account_settingCreate Account SettingA

POST /api/account/settings — Create a setting for the current account. Account settings are helpdesk-wide configuration objects such as business hours and satisfaction surveys.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoConfiguration data specific to the setting type. For 'business-hours': { timezone: string, business_hours: { days: string, from_time: string, to_time: string } }
nameNoHuman-readable name for this setting
typeYesThe type/category identifier of the setting (e.g. 'business-hours')

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, so the mutating nature is known. The description adds the context that settings are helpdesk-wide, which is useful. However, it does not disclose side effects, authentication needs, idempotency, or failure behavior. Given the annotations, the description provides adequate but not extra 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 two concise sentences. The first sentence leads with the HTTP method and the core action; the second adds valuable context with examples. There is no redundancy or filler, and it is appropriately sized for the tool's complexity.

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?

This is a simple create tool with three well-documented parameters, no output schema, and reasonable annotations. The description plus schema fully covers how to invoke it. Missing details like return value and error cases are not critical here, but for full completeness they would be nice to have.

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 100% and each parameter has a meaningful description (type, name, data with an example for business-hours). The description's mention of business hours and satisfaction surveys reinforces the 'type' meaning but does not add new parameter semantics 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 ('Create a setting') and the resource ('the current account'), with a specific endpoint. It gives useful examples of what account settings are, but it does not explicitly distinguish this tool from sibling create tools such as create_satisfaction_survey, so it falls short of a 5.

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 when to use this tool by defining account settings as helpdesk-wide configuration objects and giving examples, but it does not provide explicit guidance on when NOT to use it or which sibling tools to prefer (e.g., update_account_setting for modifications, create_satisfaction_survey for surveys). This is implied usage, not explicit direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_customerCreate CustomerB

POST /api/customers — Create a new customer. All fields are optional.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNoMetadata associated with the customer. Arbitrary key-value pairs for storing additional information.
nameNoFull name of the customer.
noteNoA note associated with the customer for internal use.
emailNoPrimary email address of the customer (max 320 characters).
channelsNoThe customer's contact channels (email addresses, phone numbers, etc.).
languageNoThe customer's preferred language. Format: ISO 639-1 language code (e.g., 'en', 'fr', 'de').
lastnameNoLast name of the customer.
timezoneNoThe customer's preferred timezone. Format: IANA timezone name (e.g., 'UTC', 'America/New_York').
firstnameNoFirst name of the customer.
external_idNoID of the customer in a foreign system (e.g., Stripe, Aircall, Shopify). Not used internally by Gorgias.
custom_fieldsNoCustom field values assigned to this customer.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds 'All fields are optional,' but this information is already evident from the schema (0 required parameters). With annotations already indicating a write operation (readOnlyHint=false), the description offers no additional behavioral context such as return value, side effects, or authentication needs. The openWorldHint=true annotation hints at external implications, but the description does not elaborate.

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, efficient sentence that includes the HTTP method and path. It is front-loaded with the core action and contains no fluff.

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?

For a create operation with 11 parameters, nested objects, and no output schema, the description is too sparse. It does not indicate what a successful response returns, possible error conditions, or any constraints or side effects. The openWorldHint annotation suggests broader implications, yet the description stays silent.

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 100% with detailed descriptions for all 11 parameters, so the description need not repeat them. The statement that all fields are optional aligns with the schema's lack of required fields, but does not add new meaning beyond the 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 'Create a new customer' with the explicit endpoint 'POST /api/customers', identifying the verb and resource distinctly. This naturally differentiates it from siblings like gorgias_update_customer and gorgias_delete_customer.

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. It does not clarify prerequisites, such as whether an external_id is required for integration, or when updating an existing customer would be preferable. The only usage clue is the obvious 'create' action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_custom_fieldCreate Custom FieldA

POST /api/custom-fields — Create a new custom field for Ticket or Customer entities. The definition.data_type discriminator ('text', 'number', or 'boolean') determines which input_settings variant applies.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesThe display name of the custom field (1–255 characters)
priorityNoControls display order. Lower values appear first (0–5000)
requiredNoWhether this field must be filled in by agents (default: false)
definitionYesDefines the data type and input configuration for the field
descriptionNoA human-readable description of the custom field (max 1024 characters)
external_idNoID of the custom field in a foreign system (e.g., Zendesk)
object_typeYesType of entity this custom field applies to
managed_typeNoManaged field type classification. Leave null for standard custom fields
deactivated_datetimeNoISO 8601 datetime to deactivate the field at creation. Typically null

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint=false), and the description confirms it by saying 'Create'. The description adds only the data type discriminator note, which is more of a parameter relationship than a behavioral disclosure. It does not reveal side effects, auth needs, or response behavior, but the annotations cover the mutation aspect.

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, focused sentence that front-loads the action and resource, then adds the key discriminator detail. No wasted words, and it conveys the essential information clearly.

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?

For a complex tool with 9 params and nested objects, the schema provides thorough parameter documentation, and the description adds the entity type scope and discriminator hint. However, there is no mention of the return value or expected response, which would be helpful given no output schema exists. Still, the overall context is sufficient for an agent to invoke the tool correctly.

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 100%, with detailed descriptions for every parameter including the input_settings variants. The description's mention of the data_type discriminator is useful but redundant, since the schema already specifies the input_settings structure. Thus the description adds limited value beyond the 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 ('Create a new custom field') and the resource ('Ticket or Customer entities'), making the tool's purpose immediately obvious. It distinguishes itself from sibling tools like gorgias_update_custom_field by using the verb 'create' and specifying the two target entity types.

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 provides clear context: it is for creating custom fields, not updating or deleting them. It does not explicitly mention alternatives like gorgias_update_custom_field, but the scope is self-evident, making the usage context clear without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_integrationCreate IntegrationA

POST /api/integrations — Creates a new integration within the Gorgias helpdesk system. The primary supported type via the REST API is the HTTP integration, which calls an external URL when specific ticket events occur.

ParametersJSON Schema
NameRequiredDescriptionDefault
httpNoHTTP configuration object. Required when type is 'http'
nameYesName of the integration (e.g. 'My HTTP integration')
typeYesOnly 'http' integrations are creatable via the REST API
descriptionNoHuman-readable description of the integration's purpose
business_hours_idNoID of the business hours configuration to associate with this integration. Relevant for phone integrations only. When null, the account's default business hours are used

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint: false), and the description adds context about how the created integration behaves ('calls an external URL when specific ticket events occur'). This goes beyond the annotation by explaining the purpose of an HTTP integration. However, it doesn't disclose permission requirements or response format, so it's not a perfect score.

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 two sentences, front-loaded with the HTTP method and resource, and contains no filler. Every word adds value, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a nested 'http' object and multiple parameters, the description provides a solid high-level overview, and the schema fills in the details. It lacks information about the return value, but the absence of an output schema lowers the need. It's adequate for the complexity level.

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 100%, so the baseline is 3. The description adds a minor note about HTTP being the primary type, which reinforces the 'type' parameter's constraint, but it doesn't provide additional semantics beyond what the schema already documents in detail.

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 ('Creates a new integration'), specifies the resource ('within the Gorgias helpdesk system'), and distinguishes the tool by noting the primary supported type is HTTP integration. This differentiates it from sibling tools like get/update/delete integration.

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 when to use this tool (to create a new integration) and notes that the REST API only supports HTTP integrations, which guides the agent toward the 'type' parameter. It doesn't explicitly name alternatives like update_integration, but the create action is inherently distinct from list/get/update/delete siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_jobCreate JobA

POST /api/jobs — Create a new asynchronous job. Jobs run in the background for long-running tasks such as bulk ticket updates, macro application, exports, and imports.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNoArbitrary key-value metadata to attach to the job (not used by Gorgias). Pass null to clear.
typeYesThe type of job to create
paramsYesJob-type-specific configuration parameters. REQUIRED. Structure depends on the type field — e.g. applyMacro needs macro_id + ticket_ids, updateTicket needs updates, importMacro needs url.
scheduled_datetimeNoISO 8601 datetime to schedule the job (max 60 minutes in the future). If omitted or null, queued for immediate execution.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that jobs are asynchronous and run in the background, which is not conveyed by the annotations (readOnlyHint=false, openWorldHint=true). This adds behavioral context beyond the structured fields, but it stops short of explaining the job lifecycle (e.g., polling via gorgias_get_job, response format, or failure handling).

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 (with dash), front-loading the endpoint and action, followed by a brief rationale for background jobs. No fluff; every clause adds value.

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?

While the schema thoroughly documents all 4 parameters, the description lacks information about return values (no output schema) and the need to monitor job progress via sibling tools. Given the tool's complexity and async nature, a brief mention of 'poll job status via get_job' would improve completeness. Still, the description covers the main use cases.

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 100% with detailed parameter descriptions, including dependencies (e.g., applyMacro needs macro_id + ticket_ids, importMacro needs url). The description itself adds no parameter semantics beyond what's in the schema, so the baseline 3 applies.

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 explicitly states 'Create a new asynchronous job' with the HTTP endpoint, clarifying it creates jobs rather than executing operations synchronously. It lists concrete examples of long-running tasks (bulk updates, macros, exports, imports), distinguishing it from siblings like gorgias_get_job, gorgias_list_jobs, gorgias_update_job, and gorgias_cancel_job.

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 usage for long-running background tasks, giving examples that map to job types (bulk ticket updates, macro application, exports, imports). It does not explicitly state when not to use it or name alternative synchronous endpoints (e.g., gorgias_update_ticket for single updates), but the context is reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_macroCreate MacroB

POST /api/macros — Create a new macro (canned response). A macro is a list of actions that can be applied to tickets to modify them and/or reply to them.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the macro. Choose a name that can be easily searched.
intentNoThe intended use case of the macro.
actionsNoA list of actions to be applied on tickets. Each action object should have 'name', 'title', 'arguments', and optionally 'type' and 'description'.
languageNoThe language of the macro in ISO 639-1 format (e.g. 'en', 'fr').
external_idNoExternal ID of the macro in a foreign system. Not used by Gorgias; set to any custom value.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond the annotations. It does not disclose side effects, permissions required, irreversibility, or what is returned. While annotations indicate a non-read-only operation, the description offers no additional transparency about consequences or prerequisites.

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 two sentences, front-loaded with the HTTP method and action. It includes a concise definition of a macro without any redundant wording. Every sentence contributes to understanding the tool's 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 moderate complexity (5 parameters, create operation) and absence of an output schema, the description is minimally adequate. It explains the macro entity but does not mention what the API returns (e.g., created macro object), authentication requirements, or potential side effects. The annotations partially cover the safety profile, but completeness is limited.

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 covers all 5 parameters with descriptions (100% coverage), so the baseline is 3. The description adds minimal semantic value by defining a macro as 'a list of actions', which loosely relates to the 'actions' parameter, but it does not explain individual parameters beyond what the schema already provides.

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 'Create a new macro' with the specific HTTP method POST and resource '/api/macros'. It partially distinguishes from siblings by defining a macro as a canned response and list of actions, which differentiates from update/delete/list 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 guidance is provided about when to use this tool versus alternatives. It does not mention that update_macro should be used for modifying existing macros or list_macros for viewing. The description only states the action itself, leaving the agent without contextual usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_messageCreate MessageA

POST /api/tickets/{ticket_id}/messages — Create a new message on an existing ticket. Supports three use cases: (1) Send to customer — omit sent_datetime, Gorgias sends asynchronously; (2) Import already-sent message — provide sent_datetime; (3) Internal note — set channel to 'internal-note' and public to false.

ParametersJSON Schema
NameRequiredDescriptionDefault
viaYesHow the message was received or sent from Gorgias (e.g. 'api', 'email', 'helpdesk')
metaNoCustom structured metadata. Reserved keys: current_page, relevant_content_indexes, is_quick_reply, campaigns, campaigns_id, self_service_flow.
actionNoControls behavior when an external send action fails: 'force' bypasses the failure, 'retry' retries it, 'cancel' cancels it
macrosNoMacros to apply. Each item must have an id field (integer > 0). Example: [{"id": 42}]
publicNoWhether the message is visible to customers. Set to false for internal notes (default: true)
senderNoThe message originator (user or customer). Object with optional fields: id (integer >= 0), email (string <= 320 chars), name, external_id, channels (array of {type, address}), language, timezone, meta, note. Example: {"id": 93, "email": "agent@example.com"}
sourceNoRouting details for the message. Object with fields: type (TicketMessageSourceType string), from (object with address and name), to (array of address objects), cc (array), bcc (array), extra. Example: {"type": "email", "from": {"address": "sender@example.com", "name": "Sender"}, "to": [{"address": "receiver@example.com", "name": "Receiver"}]}
channelYesChannel used to send the message. Use 'internal-note' for agent-only notes.
headersNoMessage headers as key-value pairs (primarily for email). Example: {"X-Custom-Header": "value"}
subjectNoMessage subject line (primarily for email)
receiverNoThe primary message recipient (user or customer). Optional for internal notes. Same schema as sender: id, email, name, external_id, channels, language, timezone, meta, note. Example: {"id": 8, "email": "customer@example.com"}
body_htmlNoHTML-formatted message body
body_textNoPlain-text message body
ticket_idYesThe ID of the ticket to add the message to
from_agentYestrue if sent by your company (agent), false if sent by a customer
message_idNoID of the message on the originating external service (e.g. email Message-ID header)
attachmentsNoFiles to attach. Each item: url (required URI), name (required), content_type (required MIME type), size (bytes), public (boolean, default true), extra.
external_idNoID of the message in a foreign system (max 255 chars). Not used by Gorgias.
mention_idsNoList of User IDs to mention in an internal note. Only valid for internal-note messages.
sent_datetimeNoISO 8601 datetime when the message was sent. If omitted, Gorgias will send it and populate this field. Providing a value imports the message as already-sent.
stripped_htmlNoHTML body with signatures and prior replies removed
stripped_textNoPlain-text body with signatures and prior replies removed
integration_idNoID of the integration used to send the message (must be > 0)
failed_datetimeNoISO 8601 datetime when the send attempt failed
opened_datetimeNoISO 8601 datetime when the recipient viewed the message
created_datetimeNoISO 8601 datetime when the message was created
deleted_datetimeNoISO 8601 datetime when the message was deleted
last_sending_errorNoDetails of a known sending error. Object with an 'error' string field describing the transmission error.
stripped_signatureNoExtracted signature portion of the message

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds context beyond annotations: explains asynchronous sending behavior when sent_datetime is omitted, and how to create internal notes (public=false). No contradiction with readOnlyHint=false.

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?

Three tightly written sentences, front-loaded with the action and endpoint. No filler.

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?

Despite 29 parameters, the schema covers all semantics and the description covers the three primary scenarios. Missing output format information, but no output schema is provided, and it doesn't hinder correct invocation.

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?

Schema has 100% description coverage, so the baseline is 3. The description adds value by grouping parameters into three use cases, clarifying the role of sent_datetime, channel, and public. However, it doesn't explain other complex params like meta or action beyond 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 'Create a new message on an existing ticket' with the HTTP endpoint, and it differentiates from sibling tools like get_message/update_message by specifying the creation action and ticket association.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly outlines three use cases with specific parameter guidance (omit sent_datetime for send, provide it for import, set channel to internal-note and public=false for notes). This is strong when-to-use guidance, though it doesn't name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_ruleCreate RuleA

POST /api/rules — Create a new automation rule with JavaScript logic and event triggers.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe logic of the rule as JavaScript code
nameYesThe name of the rule
code_astNoThe logic of the rule as an ESTree AST representation (auto-generated from code if not specified)
priorityNoOrder of execution; rules with higher priority values are executed first
descriptionNoA human-readable description of the rule
event_typesNoComma-separated list of events that trigger this rule. Allowed values: ticket-created, ticket-updated, ticket-message-created, ticket-assigned, ticket-self-unsnoozed, satisfaction-survey-responded
deactivated_datetimeNoISO 8601 datetime when the rule was deactivated. Set to null to create the rule as active

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds some behavioral context beyond the annotations by indicating that rules contain 'JavaScript logic and event triggers,' which explains how the rule operates. However, it does not mention side effects, execution behavior, or requirements like valid code. Annotations already signal a write operation (readOnlyHint: false), so the description is consistent but not highly informative.

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 includes the HTTP method and endpoint, making it immediately actionable. Every word contributes to clarity, with no redundant or filler content.

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 adequate for a create operation with a well-documented schema, but it lacks details about post-creation behavior (e.g., whether the rule activates immediately, what the response contains, or any side effects). Given the lack of an output schema and the openWorldHint annotation, a bit more context would improve completeness.

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 input schema provides 100% coverage of parameter descriptions, so the baseline is 3. The description's mention of 'JavaScript logic and event triggers' loosely maps to the 'code' and 'event_types' parameters but does not add new meaning beyond what the schema already provides. No additional parameter semantics are introduced.

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 function: 'Create a new automation rule with JavaScript logic and event triggers.' It uses a specific verb ('Create') and resource ('automation rule'), and distinguishes itself from sibling tools like gorgias_get_rule, gorgias_update_rule, and gorgias_delete_rule by focusing on the creation action.

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 usage context: it is for creating rules, as opposed to retrieving, updating, or deleting them, which are covered by sibling tools. However, it does not explicitly mention when not to use it or name alternatives, so it falls short of a 5. The context is clear enough for an agent to select it for rule creation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_satisfaction_surveyCreate Satisfaction SurveyA

POST /api/satisfaction-surveys — Create a new satisfaction survey. Only one survey is allowed per ticket.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNoCustom key-value data to associate with the survey (not used by Gorgias)
scoreNoSatisfaction score, integer 1-5 (1 = worst, 5 = best). The Gorgias API accepts any integer in the inclusive range.
body_textNoThe comment sent by the customer (max 1000 characters)
ticket_idYesThe ID of the ticket the survey is associated with (only one survey per ticket allowed)
customer_idYesThe ID of the customer who filled the survey
sent_datetimeNoISO 8601 datetime when the survey was sent (null means not sent yet)
scored_datetimeNoISO 8601 datetime when the survey was filled by the customer
created_datetimeNoISO 8601 datetime when the survey was created
should_send_datetimeNoISO 8601 datetime when the survey should be sent. Set to null to prevent Gorgias from sending it automatically

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false), and the description's 'Create' is consistent. The description adds the one-survey-per-ticket rule, which is beyond annotation scope, but it does not disclose error behavior or permissions, so it's a 3.

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?

Two brief sentences capture purpose and constraint with zero waste. The description is front-loaded with the HTTP method and immediately states the core action.

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?

The definition is adequate for a creation tool with well-described parameters; the uniqueness constraint is important context. However, without an output schema, it could mention the response or conflict handling, keeping it at a 4.

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?

All 9 parameters have descriptions in the schema, so baseline is 3. The description's uniqueness rule duplicates the ticket_id schema description, adding no new parameter semantics beyond what the schema already provides.

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 identifies the verb (Create) and resource (satisfaction survey), and the uniqueness constraint 'Only one survey is allowed per ticket' distinguishes it from sibling tools like get/list/update. The HTTP method adds precision.

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?

It states the action and the key constraint 'Only one survey is allowed per ticket,' giving clear context for when to use it. However, it does not explicitly mention alternatives or exclusions beyond the uniqueness rule, so it's a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_tagCreate TagA

POST /api/tags — Create a new tag. Tag names are case-sensitive.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the tag (case-sensitive)
decorationNoVisual styling for the tag
descriptionNoShort description of the tag

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false), so the description doesn't need to restate that. It adds the behavioral trait that tag names are case-sensitive, which is useful context not captured by annotations. However, it does not disclose potential side effects, idempotency, or auth requirements, which would be valuable for a create operation.

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, informative sentence that leads with the action and endpoint, followed by a key behavioral note. It is concise, well-structured, and avoids redundant information.

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?

For a simple create operation with a fully described schema and annotations, the description is mostly complete. It lacks explicit mention of the response format (e.g., created tag object) and does not clarify the openWorldHint annotation, but these are not critical for basic usage. Overall, it provides enough context for an agent to invoke the tool correctly.

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 100%, so the baseline is 3. The description repeats the 'case-sensitive' note already present in the schema's name parameter description, adding no new parameter meaning. It provides no extra context beyond what the schema already offers.

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 'Create a new tag' with the HTTP endpoint, using a specific verb and resource. It distinguishes from sibling tag operations like list, update, delete, and merge. The additional detail about case-sensitivity further clarifies the tool's behavior.

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 versus alternatives, such as create vs update vs delete tag, or when not to use (e.g., if tag already exists). The description only states the basic action, leaving usage inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_teamCreate TeamA

POST /api/teams — Create a new team. Teams are used with the auto-assign tickets feature.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the team
membersNoThe list of users to include in the team
decorationNoObject describing how the team appears on the webpage
descriptionNoLonger description of the team

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, so the mutating nature is known. The description adds domain context (teams used with auto-assign tickets) but does not disclose additional behavioral traits such as required permissions, duplicate handling, or side effects. With annotations present, the bar is lower, but no extra behavioral detail is added beyond the obvious create action.

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 two sentences and directly states the endpoint and purpose. The second sentence about auto-assign tickets is valuable context without unnecessary fluff. Every word earns its place.

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?

The tool is a straightforward create operation with a rich input schema that documents all parameters. The description provides the core purpose and domain context. It lacks explicit return-value information or authentication requirements, but for a simple create tool with well-documented params, it is largely 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?

Schema description coverage is 100%, with each parameter (name, members, decoration, description) documented in the schema. The description does not add any additional meaning or syntax details for parameters, so the baseline of 3 applies.

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 'POST /api/teams — Create a new team' uses a specific verb and resource, clearly identifying the action. It is distinct from sibling tools like gorgias_list_teams, gorgias_update_team, and gorgias_delete_team, and adds useful context about the auto-assign tickets feature.

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 used for creating teams, and the note about auto-assign tickets gives context, but it does not explicitly state when to use this tool versus alternatives like updating or listing teams. No exclusions or 'when not to use' guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_ticketCreate TicketB

POST /api/tickets — Create a new support ticket. Requires 'via' and at least one message in the 'messages' array.

Each message in the 'messages' array must include:

  • channel (string, required): e.g. 'email', 'chat', 'sms', 'api', etc.

  • from_agent (boolean, required): true if sent by an agent, false if by a customer

  • via (string, required): e.g. 'email', 'api', 'chat', 'sms', etc.

  • body_text (string, optional): plain text body

  • body_html (string, optional): HTML body

  • public (boolean, optional, default true): false = internal note

  • subject (string, optional): message subject

  • sender (object, optional): { id, email, name, external_id, language, meta, note, timezone, channels }

  • receiver (object, optional): { id, email, name, external_id, language, meta, note, timezone, channels }

  • source (object, optional): { type, from: { address, name }, to: [{ address, name }], cc: [...], bcc: [...], extra }

  • attachments (array, optional): [{ url, name, content_type, size, public, extra }]

  • integration_id (integer, optional): ID of the integration used

  • message_id (string, optional): external message ID

  • external_id (string, optional): foreign system ID (max 255 chars)

  • created_datetime, sent_datetime, failed_datetime, deleted_datetime (ISO 8601, optional)

  • mention_ids (array of integers, optional): user IDs to mention in internal notes

  • headers (object, optional): key-value message headers

  • meta (object, optional): message metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
viaYesHow the first message was received or sent from Gorgias. Enum: 'aircall', 'api', 'chat', 'contact_form', 'email', 'facebook', 'facebook-mention', 'facebook-messenger', 'facebook-recommendations', 'form', 'gorgias_chat', 'help-center', 'helpdesk', 'instagram', 'instagram-ad-comment', 'instagram-comment', 'instagram-direct-message', 'instagram-mention', 'internal-note', 'offline_capture', 'phone', 'rule', 'self_service', 'shopify', 'sms', 'twilio', 'twitter', 'twitter-direct-message', 'whatsapp', 'yotpo', 'yotpo-review', 'zendesk'
metaNoMetadata associated with the ticket (arbitrary key-value pairs)
spamNoWhether the ticket is considered spam. Default: false
tagsNoTags associated with the ticket
statusNoStatus of the ticket. Default: 'open'
channelNoChannel used to initiate the conversation. Enum: 'aircall', 'api', 'chat', 'contact_form', 'email', 'facebook', 'facebook-mention', 'facebook-messenger', 'facebook-recommendations', 'help-center', 'instagram-ad-comment', 'instagram-comment', 'instagram-direct-message', 'instagram-mention', 'internal-note', 'phone', 'sms', 'twitter', 'twitter-direct-message', 'whatsapp', 'yotpo-review'
subjectNoSubject of the ticket (max 998 characters)
customerNoCustomer associated with the ticket
languageNoLanguage primarily used in the ticket (ISO 639-1). Auto-detected if not set.
messagesYesArray of message objects composing the ticket (1–500). Each message requires: channel (string), from_agent (boolean), via (string). Optional: body_text, body_html, public, subject, sender, receiver, source, attachments, integration_id, message_id, external_id, created_datetime, sent_datetime, headers, meta, mention_ids.
priorityNoPriority of the ticket. Default: 'normal'
from_agentNoWhether the first message was sent by your company (true) or by a customer (false)
external_idNoID of the ticket in a foreign system (max 255 chars, not used by Gorgias)
assignee_teamNoTeam assigned to the ticket
assignee_userNoUser assigned to the ticket
custom_fieldsNoCustom fields associated with the ticket
closed_datetimeNoWhen the ticket was closed (ISO 8601)
opened_datetimeNoWhen the ticket was first opened by a user (ISO 8601)
snooze_datetimeNoWhen the ticket will be re-opened automatically (ISO 8601)
created_datetimeNoWhen the ticket was created (ISO 8601)
trashed_datetimeNoWhen the ticket was moved to the trash (ISO 8601)
updated_datetimeNoWhen the ticket was last updated (ISO 8601)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and openWorldHint=true, and the description does not contradict them. It adds constraints about required message fields but does not disclose side effects, default behaviors, or error conditions. Given the annotation coverage, the description adds a modest amount of 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Opens with a crisp one-sentence summary, but then devotes a long bullet list to message fields that largely mirrors the input schema's messages item description. While structured, it is verbose and not front-loaded with broader context; the schema already documents most of this.

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?

For a 22-parameter creation tool with no output schema, the description thoroughly documents message subfields but omits workflow aspects like how the ticket is routed, how to assign via IDs, or when to use alternative tools. It is serviceable but not comprehensive for an agent making real-world decisions.

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?

Schema coverage is 100%, so baseline is 3. The description goes beyond the schema by clarifying defaults (e.g., 'public (optional, default true): false = internal note'), explaining the meaning of from_agent, and detailing the structure of sender/receiver/source. This adds value for a complex nested parameter.

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 'Create a new support ticket' and includes the API endpoint, making the action and resource unambiguous. However, it doesn't directly differentiate from sibling tools like gorgias_create_message or gorgias_update_ticket, so it misses the 'distinguishes from siblings' criterion for a 5.

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 mentions required fields ('Requires via and at least one message') but provides no guidance on when to choose this tool over alternatives like create_message (for adding a message to an existing ticket) or update_ticket. No 'use this when' or 'instead of' context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_userCreate UserB

POST /api/users — Create a new user (agent or administrator) in the Gorgias helpdesk.

ParametersJSON Schema
NameRequiredDescriptionDefault
bioNoShort biography of the user
metaNoArbitrary key-value data to associate with the user. Not used by Gorgias internally.
nameYesFull name of the user. If not provided, may be derived from firstname and lastname.
roleYesThe role to assign to the user
emailYesEmail address for the new user's Gorgias account. Used for login and notifications.
activeNoWhether the user can log in. Defaults to true if not specified.
countryNoCountry of the user as ISO 3166-1 alpha-2 code (e.g. 'FR', 'US')
languageNoUI locale for the user's Gorgias interface. Gorgias restricts this field to 'fr' or 'en' (agent UI language, not ticket content language).
lastnameNoLast name of the user
timezoneNoPreferred timezone as IANA timezone name (e.g. 'US/Pacific', 'Europe/Paris')
firstnameNoFirst name of the user
external_idNoID of the user in a foreign system (e.g. Stripe, Aircall). Not used by Gorgias.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, meaning a write operation, but the description adds almost no behavioral context beyond that. It does not disclose potential side effects, permissions required, error behavior, or what happens on success. The only added detail is the user types, which is already partly in the schema.

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 the HTTP method and resource clearly identified. Every word earns its place, and there is no redundancy.

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 schema covers all parameter details, and the description gives the core purpose. However, with no output schema, the return value or response format is not described, and there is no context about error scenarios or special behaviors. This is adequate but not rich.

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 100%, so the schema already documents all parameters thoroughly. The description adds no extra meaning beyond pointing out agent/administrator roles, which is a subset of the full role enum. Baseline 3 applies.

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 verb ('Create') and resource ('a new user') in the Gorgias helpdesk, and even specifies the user types (agent or administrator). This distinguishes it from sibling tools like gorgias_create_team or gorgias_create_customer.

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 guidance is provided. The description does not explain when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The intended use is only implicitly obvious from it being a create operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_viewCreate ViewA

POST /api/views — Create a new view with filters, sorting, and visibility settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name of the view (default: empty string)
typeNoType of objects the view applies to. Only 'ticket-list' is supported (default: 'ticket-list')
fieldsNoTicket attribute names to display as UI columns
searchNoFree-text search query to filter matching items
filtersNoJavaScript-style filter expression. Supports template variables e.g. eq(ticket.assignee_user.id, '{{current_user.id}}') && eq(ticket.status, 'open')
order_byNoTicket attribute used to sort view items (default: 'updated_datetime')
order_dirNoSort direction for view items (default: 'desc')
decorationNoDisplay configuration for the view
section_idNoID of the view section to place this view in
visibilityNoAccess level: 'public' (all users), 'shared' (specific users/teams plus admins), 'private' (single user). Default: 'public'
shared_with_teamsNoIDs of teams to share the view with. Used when visibility is 'shared'. Max 100 items.
shared_with_usersNoIDs of users to share the view with. Used when visibility is 'shared' or 'private'. Max 100 items.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, so the mutation flag is covered. The description adds the HTTP method 'POST' and a summary of the resource configuration. It does not disclose potential side effects, permissions needed, or return behavior, but with annotations present this is acceptable.

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: 'POST /api/views — Create a new view with filters, sorting, and visibility settings.' Every word contributes; no filler or repetition.

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 12 optional parameters and nested objects, but no output schema. The description is terse and does not explain what the response will be or typical usage combinations. However, the schema is very detailed, partially compensating for the lack of contextual guidance.

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 100%, with each parameter explained in detail (e.g., visibility enum, filter expression example). The description minimally summarizes these as 'filters, sorting, and visibility settings', adding no new meaning beyond the schema, so baseline 3 applies.

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 and resource: 'Create a new view'. It also lists key features—filters, sorting, visibility settings—which distinguish it from siblings like gorgias_update_view or gorgias_list_views.

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 gives no guidance on when to use this tool versus alternatives (e.g., updating an existing view), no prerequisites, and no context about views in the Gorgias system. The agent must infer usage solely from the tool name and generic 'create' semantics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_create_widgetCreate WidgetA

POST /api/widgets — Create a new widget to display customized data from integrations in the Gorgias ticket or customer sidebar.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of data the widget is attached to
orderNoOrder of precedence; widgets with lower order appear first (default: 0)
app_idNoID of the 3rd party app. Used for type 'customer_external_data' widgets
contextNoThe UI context where this widget is displayed (default: 'ticket'). Note: 'user' is deprecated, use 'customer'
templateYesTemplate to render the data of the widget
integration_idNoID of the HTTP integration this widget is attached to. Only for type 'http' widgets
deactivated_datetimeNoISO 8601 datetime when the widget was deactivated. Set to deactivate on creation

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and openWorldHint=true, which align with the 'Create' action. The description adds the context that the widget displays integration data in the sidebar, which is useful, but it does not disclose any other behavioral traits such as auth requirements or side effects beyond creation.

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 that front-loads the HTTP method and resource, followed by the purpose. It is concise with no redundant information.

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?

As a create operation with no output schema, the description does not mention the return value or any error conditions. It also does not explain how the template structure translates to the rendered widget, though the schema covers parameters. This leaves the agent without sufficient information about expected outcomes.

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 input schema has 100% description coverage, with all 7 parameters documented. The tool description does not add any parameter-specific information, so it adds no value beyond the schema. Thus baseline 3 is appropriate.

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 function with a specific verb ('Create') and resource ('new widget'), and specifies the context ('ticket or customer sidebar'), distinguishing it from sibling tools like get_widget or update_widget.

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 does not explicitly state when to use this tool over alternatives or any exclusions. It simply says 'Create a new widget,' which implies the usage scenario but provides no guidance on alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_customerDelete CustomerA
DestructiveIdempotent

DELETE /api/customers/{id} — Permanently delete a single customer by ID. This operation is irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the customer to delete.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as destructive and not read-only, but the description adds 'Permanently' and 'irreversible', which clarifies that the deletion cannot be undone. This goes beyond the structured annotations and is valuable 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the HTTP DELETE endpoint. It includes all essential information without wasted 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?

For a simple delete tool with strong annotations, the description is nearly complete. It covers what is deleted, that it is permanent, and that it is by ID. However, it does not mention what happens upon success (e.g., response format) or explicitly reference the bulk-delete alternative, which would tighten completeness.

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 100% coverage with the id parameter described as 'The ID of the customer to delete.' The description only says 'by ID', adding no extra meaning beyond what the schema already provides. Baseline of 3 is appropriate.

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 permanently deletes a single customer by ID, using a specific verb and resource. The phrase 'single customer' distinguishes it from bulk-delete siblings like gorgias_delete_customers.

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 clearly indicates this is for deleting one customer by ID, which implies the use case. However, it does not explicitly mention when not to use it (e.g., for bulk deletion use gorgias_delete_customers) or provide an alternative, so it lacks a full exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_customer_field_valueDelete Customer Field ValueA
DestructiveIdempotent

DELETE /api/customers/{customer_id}/custom-fields/{id} — Remove a custom field value from a customer. This removes the value assignment on the customer — it does NOT delete the custom field definition. The path 'id' is the custom field definition ID (field.id from GET /api/customers/{customer_id}/custom-fields). Returns 204 No Content on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe custom field definition ID (field.id from GET /api/customers/{customer_id}/custom-fields)
customer_idYesThe ID of the customer whose custom field value is to be deleted.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive behavior and idempotence. The description adds valuable context by explicitly stating the scope of deletion (value assignment only) and the success status code (204 No Content), which goes beyond the annotations and clarifies the tool's actual effect.

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 concise, starting with the HTTP method and endpoint, followed by a clear explanation of the operation, a key distinction from related operations, and the expected response. Every sentence adds value with no redundancy.

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?

For a simple two-parameter delete tool with no output schema, the description covers the essential behavioral details: the exact effect, the non-effect, and the success response. Combined with the annotations, it provides a complete picture for an agent to invoke the tool correctly.

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 100%, so the parameters are fully documented in the schema. The description reinforces the meaning of 'id' but doesn't add new information beyond the schema, making it a baseline score.

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 explicitly states the verb 'Remove' and the resource 'custom field value from a customer', clearly distinguishing it from deleting the custom field definition. The HTTP method and path are also given, making the tool's purpose unambiguous.

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 provides a clear 'when-not' by stating 'it does NOT delete the custom field definition', which helps prevent a common misuse. It also clarifies the id parameter references the definition ID, but it doesn't explicitly name alternative tools or broader usage context, earning a 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_customersDelete Customers (Bulk)A
DestructiveIdempotent

DELETE /api/customers — Bulk delete multiple customer records. Accepts a list of customer IDs and permanently deletes all specified customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesA list of customer IDs to delete.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds the critical context that deletion is 'permanent,' which is not explicitly in the annotations. It also specifies the HTTP endpoint 'DELETE /api/customers', providing additional behavioral clarity beyond the structured hints.

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 two sentences long, front-loaded with the HTTP method and purpose, and contains no filler. Every word earns its place by conveying the endpoint, bulk nature, and permanent outcome.

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?

The tool has only one parameter, clear annotations, and no output schema. The description covers the essential aspects: what it does, how it operates (bulk delete via DELETE), and the permanent impact. For a straightforward bulk delete operation, this is complete and sufficient for an agent to select and invoke correctly.

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 100% for the only parameter 'ids', and its description 'A list of customer IDs to delete' fully explains the property. The tool description simply restates this without adding extra meaning, so it meets the baseline for high schema coverage but adds no additional value.

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 function: 'Bulk delete multiple customer records' and 'permanently deletes all specified customers.' It uses a specific verb and resource, and the 'Bulk' qualifier distinguishes it from the sibling singular 'gorgias_delete_customer'.

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 clearly implies this is for bulk deletion when multiple customer IDs need to be removed. It doesn't explicitly mention alternatives like 'gorgias_delete_customer' for single deletions, but the title and context provide clear guidance. However, missing explicit exclusions or alternative references keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_integrationDelete IntegrationA
DestructiveIdempotent

DELETE /api/integrations/{id} — Delete an integration. Any views that use this integration will be deactivated. Integrations currently used in rules and/or other integrations cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the integration to delete

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds valuable context beyond annotations: deactivating dependent views and blocking deletion when used in rules or other integrations. This is meaningful behavioral disclosure for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the endpoint, and every sentence contributes essential information: purpose, side effects, and deletion constraints. No unnecessary words.

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?

For a simple one-parameter delete tool with strong annotations, the description is complete. It covers the operation, consequences (views deactivated), and constraints (rules/integrations usage), which is sufficient for the agent to use the tool correctly.

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 input schema already provides full documentation for the id parameter (type integer, min/max, description). The tool description does not add any additional parameter semantics; hence score is at baseline for high schema 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?

The description clearly states the tool's purpose: 'Delete an integration' with the endpoint. This specific verb+resource distinguishes it from sibling delete tools (e.g., gorgias_delete_customer) and other integration operations.

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 provides clear context that this tool deletes an integration and includes important constraints (views deactivated, cannot delete if used in rules/integrations). It does not explicitly mention alternatives like update or list, but the context is sufficient for most use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_macroDelete MacroA
DestructiveIdempotent

DELETE /api/macros/{id} — Permanently delete a macro by ID. This action cannot be undone. Macros in use by active rules cannot be deleted (returns 409 Conflict). Returns 204 No Content on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the macro to delete

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint, idempotentHint, and readOnlyHint=false. The description adds important behavioral details: irreversibility, the 409 conflict condition, and the 204 No Content success response, going well beyond the structured hints.

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?

Two compact sentences, front-loaded with the HTTP method and resource. Every word contributes: permanence, irreversibility, conflict condition, and success response. No fluff.

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?

For a simple one-parameter delete operation, the description covers the essential outcomes (204 success, 409 failure) and the irreversibility warning. No output schema exists, but the response behavior is specified, making the description complete for this tool's complexity.

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 only parameter, id, is fully documented in the schema with its own description. The phrase 'by ID' in the description adds little beyond the schema, so baseline 3 is appropriate since schema coverage is 100%.

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 ('macro'), and the targeting mechanism ('by ID'). It emphasizes 'permanently delete' and 'cannot be undone', which distinguishes it from archive_macros and other macro-related operations.

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?

It provides clear context on when deletion is allowed (not if in use by active rules) and the resulting 409 Conflict, which implies that archiving might be an alternative for in-use macros. However, it doesn't explicitly name archive_macros as the alternative, so guidance is slightly implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_messageDelete MessageA
DestructiveIdempotent

DELETE /api/tickets/{ticket_id}/messages/{id} — Permanently delete a specific message from a ticket. Deletion is irreversible. The parent ticket is not deleted. Returns 200 OK with an empty body on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the message to delete
ticket_idYesThe unique ID of the ticket that contains the message to delete

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description adds crucial behavioral details: deletion is irreversible, the parent ticket remains unaffected, and a successful call returns 200 OK with an empty body. This gives the agent a complete picture of side effects and expected response.

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 concise and front-loaded with the endpoint and action. It consists of two sentences that cover purpose, irreversibility, scope, and response behavior with no wasted words.

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?

For a simple delete operation with two well-documented parameters and a clear annotation set, the description is complete. It covers the effect, scope (parent ticket preserved), and return value, leaving no significant gaps for an agent to misuse the 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?

The schema already provides 100% descriptive coverage for both parameters (id and ticket_id) with clear explanations. The description adds no additional semantic meaning beyond what is in the schema, so a baseline score of 3 is appropriate.

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 states 'Permanently delete a specific message from a ticket' with a clear verb and resource. It distinguishes from deleting the parent ticket by explicitly noting 'The parent ticket is not deleted', which differentiates it from sibling tools like gorgias_delete_ticket.

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 provides clear context about when to use this tool by specifying what it does (delete a message) and what it does not do (does not delete the parent ticket). However, it does not explicitly mention alternative tools or exclusion criteria, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_ruleDelete RuleA
DestructiveIdempotent

DELETE /api/rules/{id} — Permanently delete a rule by ID. This action is irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the rule to delete

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the description's emphasis on 'permanently' and 'irreversible' adds some nuance but does not disclose additional behavior like error handling, required permissions, or side effects. No contradiction with annotations.

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 states the HTTP method, endpoint, and key behavioral trait ('irreversible'). No wasted 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?

For a simple delete tool with one well-described parameter and robust annotations, the description covers the essential purpose and permanence. It could mention response codes or prerequisites, but these are not critical given the tool's simplicity.

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 input schema fully describes the only parameter (id) with a clear description. The tool description adds no extra parameter semantics, so the schema carries the burden. Baseline 3 is appropriate.

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 (rule by ID), and its permanent nature, distinguishing it from other delete tools like gorgias_delete_customer or gorgias_delete_tag. The verb 'delete' is explicit and unambiguous.

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 (use when you need to permanently delete a rule) but provides no explicit when-not-to-use or alternatives. For example, it doesn't mention that update_rule could be used for reversible changes, which would help an agent choose between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_tagDelete TagA
DestructiveIdempotent

DELETE /api/tags/{id} — Permanently delete a single tag. Views using this tag will be deactivated. Tags used in macros/rules cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the tag to delete

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description adds value by disclosing specific side effects: deactivating views and blocking deletion for tags used in macros/rules. This goes beyond the annotation flags and helps the agent anticipate consequences.

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 concise with three short sentences. The first sentence front-loads the HTTP method and core purpose, and the subsequent sentences add essential caveats without any filler. Every phrase earns its place.

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?

For a simple single-parameter delete tool with annotations and no output schema, the description covers purpose, permanence, side effects, and failure conditions. It misses nothing critical for an agent to decide invocation, though it could mention the absence of a confirmation or rollback, but 'permanently' already implies that.

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 provides 100% coverage for the single parameter 'id' with a clear description ('The unique ID of the tag to delete'). The tool description does not add additional parameter-level meaning, which is acceptable given the high schema coverage. Baseline of 3 is appropriate.

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) and the resource (a single tag), and includes 'Permanently delete' to emphasize the effect. It distinguishes from siblings like gorgias_delete_tags by specifying 'single tag' and from merge/update operations.

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 provides important constraints on when deletion is allowed ('Tags used in macros/rules cannot be deleted') and consequences ('Views using this tag will be deactivated'), but it does not explicitly mention alternative tools like gorgias_delete_tags for bulk deletion or gorgias_merge_tags. Usage context is implied but not contrasted with siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_tagsDelete Tags (Bulk)A
DestructiveIdempotent

DELETE /api/tags — Bulk delete multiple tags by ID. Views using deleted tags will be deactivated. Tags used in macros/rules cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesArray of tag IDs to delete

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare destructiveHint=true, but the description goes further by disclosing that views using deleted tags will be deactivated and that tags used in macros/rules cannot be deleted. This provides critical side-effect and constraint information beyond the schema and annotations.

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 three short sentences. The first states the core action, the second and third add essential behavioral caveats without wasted 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?

The tool is simple with one parameter and no output schema. The description covers the action, side effects, and constraints, but doesn't mention error handling or response format. Given the simplicity, it is adequately 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 input schema has 100% coverage with the 'ids' parameter described as 'Array of tag IDs to delete'. The tool description only says 'by ID' and does not add additional parameter semantics, so baseline 3 applies.

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 states 'Bulk delete multiple tags by ID' with a specific verb, resource, and scope. It clearly distinguishes from the sibling gorgias_delete_tag by emphasizing 'bulk' and 'multiple'.

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 for deleting multiple tags at once, but does not explicitly name alternatives like gorgias_delete_tag for single deletion. The bulk context is clear, but no exclusions or comparison to singular delete tool is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_teamDelete TeamA
DestructiveIdempotent

DELETE /api/teams/{id} — Permanently delete a team by ID. Deletion is irreversible. Tickets previously assigned to the team will lose their team assignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the team to delete

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, and the description adds crucial behavioral context: 'Deletion is irreversible' and 'Tickets previously assigned to the team will lose their team assignment'. This goes beyond the annotation by explaining what exactly gets destroyed, which is exactly the kind of context that helps an agent understand consequences. No contradiction with annotations.

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 begins with the HTTP method and resource, then provides critical caveats (irreversibility and ticket assignment loss). Every element adds value with no redundancy or filler.

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?

This is a simple delete operation with one parameter, no output schema, and strong annotations. The description fully covers the operational context, including side effects and irreversibility. It is complete for an agent to correctly select and invoke the 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?

The schema covers 100% of parameters with a description for the id field. The tool description only says 'by ID' and adds no new semantics beyond what the schema already provides. With full schema coverage, the baseline of 3 is appropriate; the description does not need to compensate further.

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 with a specific verb and resource: 'Permanently delete a team by ID'. It also distinguishes itself from sibling tools by focusing on deletion and mentioning the irreversible nature and effect on tickets. This leaves no ambiguity about what the tool does.

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 usage context: use when you need to permanently delete a team. It provides important context about irreversibility and the consequence for tickets, which helps the agent decide whether this is the right tool. However, it does not explicitly mention alternatives or when not to use it, though the purpose is clear enough to avoid confusion with update/get tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_ticketDelete TicketA
DestructiveIdempotent

DELETE /api/tickets/{id} — Permanently delete a ticket by ID. This is irreversible and also removes all associated messages, tags, and custom field values. Consider using trashed_datetime via Update Ticket for a soft-delete instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the ticket to permanently delete

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds critical context: the deletion is irreversible and removes associated messages, tags, and custom field values. This goes beyond simple annotation flags and warns of collateral effects.

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?

Two sentences, front-loaded with the HTTP method and action. The first sentence states the core purpose, and the second adds crucial caveats and an alternative. No wasteful words.

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?

For a one-parameter delete operation with clear destructive effects, the description fully covers what an agent needs to know: the endpoint, irreversibility, associated data removal, and a safer alternative. The lack of an output schema is acceptable for delete operations.

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 100% coverage for the single 'id' parameter, including a clear description. The tool description doesn't add parameter-specific details, which is acceptable when schema covers it fully. Baseline 3 is appropriate.

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 states a specific verb+resource: permanently delete a ticket by ID. It also clarifies the scope of deletion (associated messages, tags, custom field values) and distinguishes from the soft-delete alternative via Update Ticket.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using trashed_datetime via Update Ticket for a soft-delete instead, providing clear guidance on when to use this tool vs. an alternative. This is a direct when/when-not comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_ticket_fieldDelete Ticket Custom Field ValueA
DestructiveIdempotent

DELETE /api/tickets/{ticket_id}/custom-fields/{id} — Remove a custom field value from a ticket. This removes the value assignment on the ticket — it does NOT delete the custom field definition. The path 'id' is the custom field definition ID (field.id from GET /api/tickets/{ticket_id}/custom-fields). Returns 204 No Content on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe custom field definition ID (field.id from GET /api/tickets/{ticket_id}/custom-fields)
ticket_idYesThe unique ID of the ticket whose custom field value to delete

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as destructive and idempotent. The description adds valuable context by explaining the destructive scope is limited to the value assignment, not the field definition, and by noting the 204 No Content response. This enhances understanding without contradicting annotations.

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 three sentences, each earning its place: the endpoint and action, the scope clarification, and the parameter/response detail. It is front-loaded with the HTTP verb and resource, with no redundancy or fluff.

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?

For a simple delete operation with only two well-described parameters and no output schema, this description fully covers the behavioral scope, parameter meanings, and success response. The presence of annotations covers safety expectations, and the description adds the critical distinction from definition deletion.

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 100%, with both 'id' and 'ticket_id' having descriptions. The main description repeats the 'id' explanation from the schema but adds no new parameter-level information, so the baseline of 3 applies.

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 opens with a specific action ('Remove a custom field value from a ticket') and immediately disambiguates the resource by stating it does NOT delete the custom field definition. This clearly distinguishes it from other ticket-related deletion tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly clarifies when to use this tool (to remove a value assignment) and when not (not to delete the definition). The phrase 'does NOT delete the custom field definition' provides an explicit exclusion, and the parameter clarification gives useful context for correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_userDelete UserA
DestructiveIdempotent

DELETE /api/users/{id} — Permanently delete a single user by ID. Deletion is irreversible.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the user to delete

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true, but the description adds the critical nuance of irreversibility: 'Deletion is irreversible.' This goes beyond the simple destructive flag and informs the agent that the action cannot be undone.

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 HTTP method and endpoint, immediately stating what it does and adding the irreversible caveat. There is no wasted text.

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?

For a simple one-parameter delete tool with strong annotations, the description is sufficient. It states the action, target, and consequence. It does not mention side effects on associated data, but this is not essential given the tool's simplicity.

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 already provides a full description for the 'id' parameter (100% coverage). The tool description adds no additional parameter-level details beyond confirming the user is identified by ID, so baseline 3 is appropriate.

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 'Permanently delete a single user by ID' uses a specific verb (delete), resource (user), and scope (single by ID). It clearly distinguishes from sibling delete tools like delete_customer and delete_team by naming the user resource.

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 clearly identifies when to use this tool: when a user needs to be permanently deleted by their ID. It does not explicitly mention alternatives or exclusions, but given the resource-specific siblings, the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_viewDelete ViewA
DestructiveIdempotent

DELETE /api/views/{id} — Permanently delete a view by ID. System views (Trash, Spam) cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the view to delete

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive operation. The description adds valuable context with 'Permanently delete' (irreversibility) and the restriction on system views, which goes beyond the annotation flags.

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 two concise sentences, front-loaded with the core action, and includes no wasted words. Every sentence provides useful information.

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?

For a simple delete-by-ID tool, the description covers all essential aspects: the action, permanence, and a critical constraint. Combined with comprehensive schema and annotations, no additional context is needed.

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 100% for the 'id' parameter, which includes a description. The description only says 'by ID', adding no extra meaning beyond the schema. Baseline 3 applies because the schema already documents the parameter adequately.

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 with a specific verb and resource: 'Permanently delete a view by ID.' It also includes the HTTP method and a distinguishing constraint (system views cannot be deleted), which separates it from sibling create/update/get/list view tools.

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 provides a clear when-to-use (deleting a view by ID) and an explicit when-not (system views like Trash and Spam cannot be deleted). However, it does not mention alternative tools or operations (e.g., updating a view instead), so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_voice_call_recordingDelete Voice Call RecordingA
DestructiveIdempotent

DELETE /api/phone/voice-call-recordings/{id} — Permanently delete a voice call recording or voicemail. Returns 204 No Content on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique identifier of the voice call recording to delete

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and non-read-only behavior. The description adds value by emphasizing 'Permanently delete' and specifying the success response (204 No Content). It also broadens scope to include voicemail, which is beyond what the tool name alone suggests.

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 extremely concise, consisting of a single sentence that covers the operation, the endpoint, the permanence, and the expected response. No filler words; every element contributes to understanding.

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?

For a simple delete operation with one parameter, no output schema, and robust annotations, the description provides sufficient context. It states the HTTP method, the permanent nature, the success response, and the resource affected. No critical information is missing.

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 input schema provides 100% coverage with a clear description for the single parameter 'id'. The tool description does not add additional parameter semantics, but this is unnecessary because the schema fully explains the parameter's meaning and 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: 'Permanently delete a voice call recording or voicemail.' It uses a specific verb (delete), identifies the resource (voice call recording/voicemail), and distinguishes from sibling retrieval tools like get_voice_call_recording. The HTTP method is also specified.

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 context is clear: use this tool when you need to permanently delete a voice call recording or voicemail. There are no explicit exclusions or alternative recommendations, but the purpose is unambiguous enough that an agent can infer when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_delete_widgetDelete WidgetA
DestructiveIdempotent

DELETE /api/widgets/{id} — Permanently delete a widget. This operation is irreversible. Returns 204 No Content on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the widget to delete

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds that deletion is irreversible (beyond just destructive) and states the success response code '204 No Content', which is not present in annotations.

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 composed of two sentences with no extraneous content. It front-loads the HTTP method and endpoint, making it immediately actionable and easy to parse.

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?

For a simple single-parameter delete operation with no output schema, the description covers purpose, irreversibility, and success response. The openWorldHint suggests potential external side effects that are not elaborated, but overall the description is sufficiently complete for the tool's simplicity.

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 fully documents the single 'id' parameter with a description and validation constraints, achieving 100% schema description coverage. The description adds no additional parameter semantics beyond what the schema already provides.

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 specifies the HTTP method and endpoint ('DELETE /api/widgets/{id}') with the verb 'delete' and resource 'widget'. This makes the tool's purpose unmistakable and distinguishes it from sibling deletion tools for other entities.

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 warns that the operation is 'Permanently delete' and 'irreversible', providing a clear when-not-to-use condition (if reversibility is needed). It does not explicitly name alternative tools, but the context is sufficient for simple deletion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_download_fileDownload FileA
Read-only

GET /api/{file_type}/download/{domain_hash}/{resource_name} — Download a private file hosted on Gorgias's servers. The path parameters are derived from a file's attachment URL: strip the scheme and domain (e.g., 'https://gorgias.io') from the URL and the remaining path segments map to file_type, domain_hash, and resource_name. For example, 'https://gorgias.io/attachments/abc123/file.png' maps to file_type='attachments', domain_hash='abc123', resource_name='file.png'.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_typeYesThe type/category classification of the file, derived from the attachment URL path (e.g., 'attachments')
domain_hashYesA hashed identifier for the Gorgias account domain, derived from the attachment URL path
resource_nameYesThe name/identifier of the specific file resource, derived from the attachment URL path (e.g., 'package-damaged.png')

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the precise URL-to-parameter mapping and that the file is private, which helps the agent correctly construct requests.

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 two sentences, front-loaded with the endpoint and purpose. The second sentence provides an explicit example for parameter derivation, with no wasted words or redundant information.

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?

No output schema exists, but the tool's purpose as a download implies the response is the file content. The description covers the essential operational steps (URL mapping) and is sufficient given the simplicity of the tool and strong annotations.

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?

Schema coverage is 100% with descriptions for each parameter, so baseline is 3. The description adds meaning beyond the schema by explaining how all parameters derive from the attachment URL and providing a concrete example ('https://gorgias.io/attachments/abc123/file.png' maps to file_type='attachments', etc.).

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 downloads a private file from Gorgias's servers, with a specific verb ('Download') and resource. It also explains the URL path structure, distinguishing it from related tools like upload_file.

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 when to use this tool: when you have an attachment URL and need to download its file. It doesn't explicitly state alternatives or exclusions, but the context is clear and the URL mapping guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_customerGet CustomerA
Read-only

GET /api/customers/{id} — Retrieve a single customer by ID, including channels, integration data, and optionally custom fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the customer to retrieve.
relationshipsNoRelations to include in the response. Pass ['custom_fields'] to include the customer's custom field values.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe-read behavior is covered. The description adds what the response includes (channels, integration data, optionally custom fields), which is useful, but does not disclose error handling, auth requirements, 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?

Single sentence, starts with the API endpoint, and every word adds value. No redundancy or filler.

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?

For a simple get-by-id tool with good annotations and full schema coverage, the description adequately conveys the return content. It does not need to explain return values in detail beyond the optional relationships, and no output schema exists to require more.

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 100% for both parameters. The description's mention of 'optionally custom fields' echoes the schema's description of the 'relationships' parameter, adding little beyond what is already documented. Baseline 3 is appropriate.

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 'Retrieve' and resource 'a single customer by ID', distinguishing it from the sibling 'list_customers' tool. It also specifies the included data (channels, integration data, optionally custom fields), making the tool's purpose unmistakable.

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 usage context: retrieve a specific customer by ID, as opposed to listing customers. It does not explicitly name alternatives or provide exclusions, but the 'single by ID' wording gives clear context for when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_custom_fieldGet Custom FieldA
Read-only

GET /api/custom-fields/{id} — Retrieve a single custom field by its unique ID. Returns the full CustomField object including definition, metadata, and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the custom field to retrieve

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is clear. The description adds value by specifying the HTTP GET method and the return structure (full CustomField object with definition, metadata, and configuration), which aids the agent in anticipating the response. No contradiction with annotations.

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?

One concise sentence front-loads the endpoint and action, with no wasted words. It is appropriately sized and immediately conveys the tool's purpose.

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?

For a simple single-parameter read tool, the description covers purpose, HTTP method, and return content. The absence of an output schema is mitigated by the mention of the full CustomField object. Annotations handle safety transparency, making this sufficiently complete for the tool's complexity.

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 already documents the single 'id' parameter with 100% coverage, including type and description. The description merely restates that it's the unique ID, adding no additional semantic information beyond what the schema provides.

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 (retrieve), the resource (custom field), and the scope (single by unique ID). It distinguishes from sibling tools like gorgias_list_custom_fields by emphasizing 'single' versus a list operation.

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 you have a specific custom field ID and need its details, but it does not explicitly state when to use this tool versus alternatives like list_custom_fields or create/update. No exclusions or alternative tool names are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_eventGet EventA
Read-only

GET /api/events/{id} — Retrieve a single event by its unique ID. Events are read-only records generated automatically by the Gorgias system.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the event to retrieve

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds context that events are 'read-only records generated automatically by the Gorgias system,' which reinforces the safety profile. However, it does not disclose additional behavioral traits such as response format, error handling, or any rate limits, so it adds only modest value beyond the annotations.

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?

Two sentences, zero wasted words. The first sentence front-loads the HTTP method and purpose; the second adds essential context about event record semantics. Perfectly sized for the tool's simplicity.

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?

For a single-parameter read-only tool, the description is adequately complete. It explains the tool's purpose and the nature of the resource (system-generated events). The absence of an output schema means return format isn't documented, but for such a simple retrieval operation, this is not a critical gap.

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 input schema already provides 100% coverage for the single 'id' parameter with a clear description ('The unique ID of the event to retrieve'). The description's mention of 'unique ID' is redundant and does not add syntax, format, or additional meaning beyond the schema, so it earns the baseline score.

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 states a specific verb ('Retrieve') and resource ('single event by its unique ID'), clearly distinguishing it from siblings like gorgias_list_events and other get_* tools. The HTTP method and endpoint prefix further clarify the exact operation.

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 clearly implies when to use this tool: when you have a specific event ID and need that single event. It does not explicitly mention alternatives or exclusions (e.g., 'use list_events for multiple events'), but the singular scope and ID requirement provide clear context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_integrationGet IntegrationA
Read-only

GET /api/integrations/{id} — Retrieve a single integration by its ID. Returns the full Integration object including HTTP configuration details for HTTP-type integrations.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the integration to retrieve

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true and openWorldHint=true annotations, the safety profile is already known. The description adds value by stating that the return is the full Integration object and highlights HTTP configuration details for HTTP-type integrations, which informs the caller about possible response complexity. This goes beyond the bare annotation and enriches behavioral expectations.

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 starts with the HTTP method and resource. It contains no filler or redundant phrasing, every clause adds meaningful information about scope and return content, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple GET-by-ID tool with a fully documented schema and read-only annotations, the description adequately covers the primary context: what is retrieved and what is returned. It does not explicitly address error behavior or when to prefer list_integrations, but given the low complexity and existing annotations, this is not a significant gap. It falls just short of fully complete because it omits any mention of not-found responses or relationship to sibling tools.

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 input schema already provides 100% coverage for the single 'id' parameter, including a clear description. The description only repeats 'by its ID' without adding extra syntax, format, or edge-case context. Per calibration, when schema coverage is high, a baseline of 3 is appropriate unless the description offers supplementary meaning, which it does not.

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 and resource: 'Retrieve a single integration by its ID.' It specifies the action (GET) and distinguishes from siblings like list_integrations or create_integration by focusing on a single record retrieval. It also adds specific return details (full Integration object with HTTP configuration), making the purpose unmistakable.

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 provides clear context: use this tool when you need a specific integration by ID. It does not explicitly mention synonyms like 'use list_integrations to see all' but the ID-based lookup is unambiguous. No exclusions or alternative tool references are given, but the simple nature of the operation makes the usage context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_jobGet JobA
Read-only

GET /api/jobs/{id} — Retrieve a single job by its unique ID. Returns full Job object including status, type, params, info (progress), and all timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the job to retrieve

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, and the description aligns with that by using 'Retrieve'. The description adds value by listing the returned fields (status, type, params, info/progress, timestamps), which is useful behavioral context about the response beyond what annotations convey. No contradictions.

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 two sentences, front-loaded with the HTTP endpoint, and includes all essential information without fluff. Every sentence contributes meaning: the purpose and the return 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?

For a simple single-resource getter with one parameter and no output schema, the description fully covers the endpoint, purpose, parameter, and expected return content. It is complete enough for an agent to invoke the tool correctly and understand the response.

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 100% and the parameter description 'The unique ID of the job to retrieve' is clear and self-sufficient. The description does not add extra semantics beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve a single job by its unique ID' with a specific verb, resource, and scope. It distinguishes itself from sibling tools like list_jobs (plural), create_job, update_job, and cancel_job by explicitly targeting a single job retrieval by ID.

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 usage is implied by the description—use this when you have a job ID and need full details—but there is no explicit guidance about alternatives or when not to use it. It does not mention list_jobs for discovering jobs or create/update/cancel for mutations, so the guidance remains implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_macroGet MacroA
Read-only

GET /api/macros/{id} — Retrieve a single macro by its unique ID. Returns the full Macro object including all actions, metadata, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the macro to retrieve

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is known. The description adds value by specifying the response contents 'full Macro object including all actions, metadata, and timestamps,' which is beyond the annotations.

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 the endpoint and action, no wasted words.

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?

For a simple single-ID retrieval with readOnlyHint and no output schema, the description sufficiently covers what it does and returns. No more is needed.

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 100%; the schema already describes the id parameter thoroughly. The description's mention of 'unique ID' adds no new semantic information, so baseline 3 applies.

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 'Retrieve a single macro by its unique ID,' specifying the verb and resource. It distinguishes from sibling tools like list_macros, create_macro, update_macro, delete_macro by focusing on a single retrieval by ID.

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 correct usage (when you have a specific macro ID), providing clear context. It does not explicitly name alternatives like list_macros, but the 'single macro' phrase signals when to use this tool over list operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_messageGet MessageA
Read-only

GET /api/tickets/{ticket_id}/messages/{id} — Retrieve a single message by its ID within a specific ticket. Returns the full TicketMessage object including content, sender/receiver details, attachments, timestamps, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the message to retrieve
ticket_idYesThe unique ID of the ticket that contains the message

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and openWorldHint, so the safety profile is known. The description adds value by specifying the return payload: 'full TicketMessage object including content, sender/receiver details, attachments, timestamps, and metadata.' This goes beyond the annotations and helps the agent understand what to expect.

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 starts with the HTTP endpoint and immediately states the purpose and return type. It is concise, front-loaded, and free of any redundant information.

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?

For a simple read-only retrieval tool with complete schema coverage and strong annotations, the description provides sufficient context: it explains the resource, required IDs, and return structure. It does not elaborate on potential errors or authentication, but these are less critical for a GET endpoint and the annotations already signal safety.

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 input schema already provides 100% coverage with clear descriptions for both required parameters (ticket_id and id). The description adds no additional semantic detail beyond what the schema offers, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

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 function: 'Retrieve a single message by its ID within a specific ticket.' It uses a specific verb ('Retrieve') and resource ('message by ID within a ticket'), and it distinguishes from sibling tools like list_messages or get_ticket by emphasizing the single-message scope.

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 usage context: you need both a ticket_id and a message ID to fetch a specific message. It clearly identifies when to use this tool (to get one message) but does not explicitly mention alternatives or when not to use it, which is acceptable given the tool's straightforward nature.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_ruleGet RuleA
Read-only

GET /api/rules/{id} — Retrieve a single rule by its unique ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the rule to retrieve

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already cover the safety profile. The description adds minimal behavioral context beyond the HTTP method and ID-based lookup, with no discussion of errors, auth, or rate limits. It does not contradict annotations.

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 HTTP method and purpose. Every word contributes value with no wasted text.

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?

For a simple single-parameter read operation, the description provides sufficient context to use the tool correctly. It could mention return value details, but the absence of an output schema and the tool's simplicity keep it acceptable.

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 100% with the 'id' property already described as 'The unique ID of the rule to retrieve'. The description's phrase 'by its unique ID' adds no significant meaning beyond the schema, so baseline 3 is appropriate.

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 'Retrieve' and the resource 'a single rule' with a specific identifier. It distinguishes from sibling tools like gorgias_list_rules by emphasizing 'single rule by its unique ID'.

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 this tool is for fetching one specific rule, contrasting with list tools. However, it does not explicitly mention alternatives or when-not-to-use conditions, so it lacks explicit exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_satisfaction_surveyGet Satisfaction SurveyA
Read-only

GET /api/satisfaction-surveys/{id} — Retrieve a single satisfaction survey by its unique ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the satisfaction survey to retrieve

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is fully covered. The description adds no extra behavioral context beyond the endpoint path and 'retrieve' wording, which doesn't contradict annotations. For a simple GET-by-ID, this is adequate but not additive.

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 with zero wasted words. It includes the HTTP method, endpoint, and a clear action. Perfectly concise and front-loaded.

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?

For a simple one-parameter read operation with readOnly annotation, the description is sufficient. It doesn't mention the response shape, but without an output schema and given the simplicity, this is a minor gap. The description is complete enough for an agent to invoke correctly.

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 100% and the id parameter's description already explains its meaning. The tool description's 'unique ID' adds no additional semantics beyond 'the ID of the survey to retrieve.' Baseline 3 is appropriate when the schema carries the parameter documentation.

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: 'Retrieve a single satisfaction survey by its unique ID.' It uses a specific verb (retrieve), resource (satisfaction survey), and scope (single by ID), which distinguishes it from sibling tools like list_satisfaction_surveys or create_satisfaction_survey.

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 when to use the tool: when you have a specific ID and need a single survey. While it doesn't explicitly mention alternatives or exclusions, the context is clear and the sibling list tool is obviously different in purpose. A slightly more explicit note about using list_satisfaction_surveys for retrieving multiple surveys would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_tagGet TagA
Read-only

GET /api/tags/{id} — Retrieve a single tag by its unique ID. Returns name, description, decoration, usage count, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the tag to retrieve

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read nature is established. The description adds the expected return fields (name, description, decoration, usage count, timestamps) but does not discuss error behavior, auth, or other edge cases. This is some added value but not rich 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 compact two-part sentence: the HTTP endpoint and a clear verb-driven purpose, followed by the return fields. Every word earns its place, and it is front-loaded with the main action.

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?

For a simple one-parameter read operation with readOnlyHint annotation, the description provides sufficient information: it identifies the tag, what it returns, and implies a single result. No output schema exists, but the listed return fields cover the essentials.

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 100% coverage for the only parameter 'id', with a clear description. The tool description merely repeats the concept of a unique ID and does not add additional semantic value beyond the 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 ('Retrieve a single tag by its unique ID'), specifies the resource and scope, and differentiates from siblings like gorgias_list_tags by indicating a single-tag fetch by ID. The HTTP method and path also add specificity.

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 the use case (when you have a specific tag ID), which distinguishes it from listing or mutation tools. However, it does not explicitly name alternatives or state when not to use it, though the singular scope makes the guidance fairly clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_teamGet TeamA
Read-only

GET /api/teams/{id} — Retrieve a single team by its unique ID. Returns name, description, decoration, members, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the team to retrieve

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful context beyond the readOnlyHint annotation by explicitly listing the returned fields (name, description, decoration, members, timestamps) and specifying the GET method. This tells the agent what to expect from the response without an output schema, though it doesn't disclose other behaviors like rate limits or auth (which may be irrelevant for a simple read).

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 starts with the endpoint and follows with the action and return fields. Every word earns its place; there is no fluff, and it is easy to parse quickly.

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?

There is no output schema, so the description's enumeration of return fields is essential and sufficiently complete for a single-resource read tool. The one-parameter input is fully covered by the schema, and the description provides all necessary context: endpoint, action, field, and expected response content.

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 input schema already documents the 'id' parameter comprehensively (type, range, required, description). The description merely repeats that it retrieves by ID, adding no new parameter-level semantics. With 100% schema coverage, the baseline of 3 is appropriate.

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 ('Retrieve') and clearly specifies the resource ('a single team by its unique ID'), which distinguishes it from siblings like list_teams, update_team, and delete_team. It also identifies the HTTP method and endpoint, leaving no ambiguity about what the tool does.

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 clearly implies usage: call this when you have a team ID and need a single team's details. However, it does not explicitly mention when not to use it or name alternatives (e.g., gorgias_list_teams for listing all teams), so it falls short of full explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_ticketGet TicketA
Read-only

GET /api/tickets/{id} — Retrieve a single ticket's raw API response. For a clean, LLM-optimised view with projected messages sorted chronologically, use gorgias_smart_get_ticket instead. Returns the full Ticket object including customer, messages, tags, custom fields, assignees, satisfaction survey, and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the ticket to retrieve
relationshipsNoNames of related objects to include in the response. Currently the Gorgias API documents 'custom_fields'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds valuable context about the response contents (customer, messages, tags, custom fields, assignees, satisfaction survey, metadata) and explicitly labels it as the 'raw API response,' which helps an agent set expectations about data granularity. It does not contradict the openWorldHint annotation, as it describes a read operation that may return varied data but no side effects.

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 two sentences long, front-loaded with the HTTP method and purpose. The first sentence states exactly what the tool does; the second sentence provides the alternative and lists response components without unnecessary elaboration. Every sentence earns its place with zero filler.

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?

For a simple single-ticket read operation, the description is quite complete: it specifies the endpoint, the raw nature of the response, the key data fields, and the alternative for a cleaner view. With readOnly annotations and no output schema, this provides enough context for an agent to select and invoke the tool correctly. Minor gaps like pagination or error handling are not critical for this type of operation.

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 100%, so the schema already documents both parameters (id and relationships). The description adds no additional parameter-level detail, but it does mention 'custom fields' in the response, which loosely relates to the relationships parameter. The baseline of 3 applies because the schema carries the parameter documentation burden and the description provides marginal extra value.

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 action ('Retrieve a single ticket's raw API response') and resource (ticket by ID), and explicitly distinguishes it from gorgias_smart_get_ticket by contrasting the raw response with the LLM-optimised view. This makes it easy for an agent to know exactly what this tool does and how it differs from a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use the alternative tool: 'For a clean, LLM-optimised view... use gorgias_smart_get_ticket instead.' This gives a clear when-not-to-use directive and names the alternative, satisfying the highest bar for usage guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_userGet UserA
Read-only

GET /api/users/{id} — Retrieve a single user by ID. Use id=0 to retrieve the currently authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the user to retrieve. Use 0 to retrieve the currently authenticated user.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is safe. The description adds the useful detail that id=0 returns the authenticated user and exposes the HTTP GET method. No contradictions.

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?

Two concise sentences that front-load the endpoint and purpose, with no wasted words.

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?

For a simple single-parameter read tool, the description covers purpose, the special id=0 behavior, and is consistent with annotations. No output schema is needed for such a standard resource retrieval.

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 already fully documents the id parameter, including the special 0 value, so description adds no new semantic information. Baseline 3 for high schema 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?

The description uses a specific verb ('Retrieve') and resource ('a single user by ID'), and adds the special case of id=0 for the authenticated user. This clearly distinguishes it from list-oriented siblings like gorgias_list_users.

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 conveys the intended use case—retrieving a specific user by ID—and the id=0 special case. However, it does not explicitly contrast with gorgias_list_users or gorgias_update_user, so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_viewGet ViewA
Read-only

GET /api/views/{id} — Retrieve a single view by its unique ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the view to retrieve

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds little beyond the schema's parameter info, but it doesn't contradict annotations or hide any surprising behavior. It lacks extra context like error handling or return format, but for a simple GET this is acceptable.

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 with zero waste, front-loaded with the HTTP method and resource path. It communicates the essential action immediately and efficiently.

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?

For a simple one-parameter GET endpoint with read-only annotations, the description is sufficiently complete. It states the action, resource, and parameter. It doesn't describe the response shape, but no output schema exists and the operation is standard, so this is a minor gap. Overall, the description provides enough context for an agent to select and invoke the tool correctly.

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 input schema already provides 100% coverage for the single 'id' parameter, including a description. The tool description's phrase 'by its unique ID' slightly reinforces the parameter's purpose, but it doesn't add meaningful new semantics beyond the 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 uses a specific verb ('Retrieve') with a clear resource ('a single view') and scope ('by its unique ID'). It clearly distinguishes from sibling tools like gorgias_list_views (list all) and gorgias_update_view (modify).

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 context is clear: use this when you have the specific view ID and need that single view. It doesn't explicitly mention alternatives, but the distinction from similar view tools is fairly obvious from the restful pattern and sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_voice_callGet Voice CallA
Read-only

GET /api/phone/voice-calls/{id} — Retrieve a single voice call by its unique ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the voice call to retrieve

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds no further behavioral context (e.g., error handling, permissions, rate limits), merely echoing the GET method which is already covered by the annotation.

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 that front-loads the HTTP method and endpoint, with zero wasted words. It efficiently conveys the tool's purpose.

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?

For a simple read-only getter with one parameter and no output schema, the description is adequate. It tells the agent exactly what the tool does and what input it needs. There is no mention of return values or errors, but those are not required when no output schema exists and the tool is straightforward.

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 100% with a clear description for the 'id' parameter. The description's 'by its unique ID' restates rather than adds meaning, so it does not enhance the schema's existing explanation.

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 'Retrieve a single voice call by its unique ID' with a specific verb and resource, and the endpoint GET /api/phone/voice-calls/{id} reinforces this. It is distinct from sibling tools like list_voice_calls and get_voice_call_event.

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 makes the primary usage clear (retrieve one voice call by ID) but does not explicitly mention when to use this over list_voice_calls or provide exclusions. The context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_voice_call_eventGet Voice Call EventA
Read-only

GET /api/phone/voice-call-events/{id} — Retrieve a single voice call event by its unique identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique identifier of the voice call event to retrieve

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations readOnlyHint=true and openWorldHint=true already convey the read-only nature. The description adds the REST endpoint path, but no additional behavioral details such as error handling, response format, or side effects. It does not contradict annotations but adds minimal value beyond them.

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 the endpoint and a clear purpose. There is no redundancy or wasted 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 tool's simplicity (1 parameter, no output schema), the description is adequate for an agent to understand the operation. It identifies the resource and the identifying parameter, though it does not specify return structure or potential error conditions.

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 input schema provides 100% description coverage for the id parameter, and the description repeats the notion of a unique identifier without adding further constraints, format, or examples. The baseline of 3 applies because the schema is fully documented.

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 it retrieves a single voice call event by its unique identifier, using a specific verb ('retrieve') and naming the resource ('voice call event'). It distinguishes from siblings like list_voice_call_events and get_voice_call by specifying 'single' and 'event'.

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 when you have a unique identifier for a voice call event, but it does not explicitly state when to use this versus list_voice_call_events or get_voice_call. No alternatives or exclusions are mentioned; the context is clear but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_voice_call_recordingGet Voice Call RecordingA
Read-only

GET /api/phone/voice-call-recordings/{id} — Retrieve a single voice call recording or voicemail by its unique identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique identifier of the voice call recording to retrieve

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds the endpoint and clarifies that the resource includes voicemails, but does not disclose response format or error behavior. It does not contradict annotations.

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?

One concise sentence with the endpoint and a clear action. No wasted words or redundant information.

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?

For a simple GET with one param and no output schema, the description adequately covers what the tool does and its endpoint. It could mention the return type, but the low complexity makes this sufficient.

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 100% for the single 'id' parameter, which already includes a description. The tool description adds no new parameter information beyond restating 'by its unique identifier', so baseline 3 is appropriate.

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 (Retrieve) and resource (voice call recording or voicemail) with a unique identifier, clearly distinguishing it from list or delete operations on the same resource.

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 usage: use this when you have an identifier for a single voice call recording. It does not explicitly mention alternatives, but the context is clear for a simple GET operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_get_widgetGet WidgetA
Read-only

GET /api/widgets/{id} — Retrieve a single widget by its unique ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the widget to retrieve

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description's 'Retrieve' and GET method align with that. No additional behavioral context is provided (e.g., error behavior, authorization), but given the strong annotation coverage, the description doesn't need to over-explain.

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 the endpoint and action, no fluff. Ideal length and front-loaded.

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?

For a simple single-resource retrieval with strong annotations and a fully documented parameter, the description covers the essential usage. No output schema is present, but the tool's purpose is unambiguous.

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 sole parameter 'id' is fully documented in the schema with a description and constraints, and the description's 'by its unique ID' adds no new semantic information. Schema coverage is 100%, so the description doesn't need to 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 explicitly states 'Retrieve a single widget by its unique ID' with a specific verb (Retrieve) and resource (widget), and the path GET /api/widgets/{id} clearly distinguishes it from sibling list/create/update/delete tools.

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?

It clearly implies usage when an ID is available for a single widget, distinguishing from gorgias_list_widgets. However, it doesn't explicitly state exclusions or name alternatives, so it misses the '5' bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_account_settingsList Account SettingsA
Read-only

GET /api/account/settings — List account settings for the current account. Returns an array of AccountSetting objects. This endpoint does not support pagination — all settings are returned in a single response. Supports filtering by type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter settings by type. Only returns settings matching this type identifier (e.g. 'business-hours')

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds valuable behavioral details: it returns an array of AccountSetting objects, does not support pagination, and supports filtering by type. This goes beyond what annotations provide.

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 two sentences, front-loaded with the endpoint and purpose. Every phrase carries information: the response type, pagination behavior, and filter capability. No redundant 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?

The description clearly covers the core behavior: listing all settings, the optional filter, and the return type. Without an output schema, it does not detail the AccountSetting object structure, but for a simple list tool with one optional parameter, the information is sufficient for an agent to call it correctly.

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 already provides a detailed description of the 'type' parameter, and the description's statement 'Supports filtering by type' adds no new meaning. With 100% schema coverage, the baseline of 3 is appropriate.

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 HTTP method and resource path ('GET /api/account/settings') and the action ('List account settings'). It distinguishes this read-only listing tool from sibling tools like create/update account setting by its verb and scope.

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?

It specifies the scope ('for the current account') and explicitly notes the lack of pagination, telling the agent that a single call returns all settings. It also mentions filtering by type, which provides usage context. It does not explicitly contrast with create/update alternatives, but the purpose is self-evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_customer_field_valuesList Customer Field ValuesA
Read-only

GET /api/customers/{customer_id}/custom-fields — List all custom field values set for a customer. Returns an array of field definitions with their current values.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesThe ID of the customer whose custom field values are to be listed.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds value by mentioning the return format ('array of field definitions with their current values') and the exact endpoint. No contradiction with annotations.

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 two sentences, front-loads the endpoint and purpose, and contains no superfluous text. Every word contributes meaning.

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?

For a simple one-parameter list operation with good annotations, the description sufficiently explains purpose and response shape. The absence of an output schema is compensated by the explicit mention of what is returned.

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 input schema already provides full coverage of the single parameter customer_id with a clear description. The tool description adds no additional parameter nuance, so a baseline score is appropriate.

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 'List all custom field values set for a customer' with the specific endpoint, distinguishing it from related tools like gorgias_list_custom_fields which would list field definitions globally rather than per-customer values.

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 gives clear context for when to use the tool (when you need a specific customer's custom field values) but does not explicitly mention alternatives or when not to use it, leaving the agent to infer from the name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_customersList CustomersA
Read-only

GET /api/customers — List customers (paginated, default order: created_datetime:desc). Supports filtering by email, external ID, name, language, timezone, view, channel type, and channel address.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by the full name of the customer.
emailNoFilter by the primary email address of the customer.
limitNoMaximum number of customers to return per page (default: 30, max: 100).
cursorNoPagination cursor from a previous response. Omit to retrieve the first page.
view_idNoFilter by saved view ID.
languageNoFilter by the customer's preferred language (ISO 639-1 format, e.g. 'fr', 'en').
order_byNoAttribute used to order customers (default: 'created_datetime:desc').
timezoneNoFilter by the customer's preferred timezone (IANA timezone name, e.g. 'America/New_York').
external_idNoFilter by the customer's ID in a foreign system (Stripe, Aircall, etc.).
channel_typeNoFilter by customer channel type (e.g. 'email', 'phone', 'sms', 'chat', 'facebook').
channel_addressNoFilter by exact channel address. Typically used together with channel_type.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows it is a safe read operation. The description adds behavioral context by mentioning pagination and default ordering (created_datetime:desc), which goes beyond the annotations. It doesn't contradict any annotation.

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 endpoint, purpose, and key filter capabilities. Every word serves a purpose, and there is no redundancy or unnecessary detail.

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?

The description covers the core purpose, pagination, and default ordering. While there is no output schema to clarify return values, the tool name and description imply a list of customers. The schema handles parameter details, and the description sufficiently orients the agent for a read-only list operation.

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 100%, and the input schema already describes all 11 parameters clearly (e.g., filters, limit, cursor, order_by). The description's list of filters adds no new semantics beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

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 action ('List customers') with the API endpoint, and the name reinforces this. It explicitly distinguishes from single-customer retrieval (gorgias_get_customer) and mutation tools by focusing on listing with pagination and filtering.

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 retrieving multiple customers and mentions supported filters, but it does not explicitly state when to use this tool versus alternatives (e.g., for a single customer use gorgias_get_customer) or provide any exclusion criteria. The context is sufficient but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_custom_fieldsList Custom FieldsA
Read-only

GET /api/custom-fields — Returns a cursor-paginated list of custom fields. Requires object_type to specify which entity's fields to list. Supports filtering by name search and archived status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of custom fields to return per page (1-100, default 30)
cursorNoCursor token for pagination. Use next_cursor or prev_cursor from a previous response.
searchNoFilter custom fields by name (substring match).
archivedNoIf true, return only archived custom fields. If false or omitted, return active fields.
order_byNoSort order. Default: 'priority:desc'.
object_typeYesType of entity to list custom fields for: 'Ticket' or 'Customer'

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds useful behavioral context: cursor-paginated results, the need for object_type, and support for name/archived filtering. This goes beyond the static annotation without contradicting it.

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 extremely concise, front-loading the endpoint and action in the first sentence, then adding pagination/requirement and filtering details in two more sentences. There is no redundancy or filler.

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 schema coverage (100%) and read-only annotation, the description adequately covers purpose, pagination, entity requirement, and filtering. It does not describe return shape or explicit alternative exclusions, but these are partially addressed by the schema and sibling context, making it complete enough for selection and invocation.

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 input schema has 100% coverage with detailed descriptions for all six parameters, including enums, defaults, and constraints. The description merely echoes the object_type requirement and filter capabilities, adding no new semantic detail beyond the 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 'Returns a cursor-paginated list of custom fields' with an explicit HTTP method and the required object_type scoping. It distinguishes the tool from sibling create/update/get custom field operations by specifying the listing behavior and entity scoping.

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: list custom fields for a specific entity with optional filters. However, it does not explicitly mention when to prefer this over alternatives like gorgias_list_ticket_fields or gorgias_get_custom_field, nor does it state any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_eventsList EventsA
Read-only

GET /api/events — List events, cursor-paginated and ordered by creation date (most recent first). Supports filtering by object, user, event type, and creation datetime range.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of events to return per page (1-100, default 30)
typesNoFilter events by event type names. The Gorgias API expects an array of strings. Common values include 'ticket-created', 'ticket-updated', 'ticket-deleted', 'ticket-message-created', 'customer-created', etc. — there are 100+ possible values; see the Gorgias Event Object documentation for the full list.
cursorNoPagination cursor. Pass the value of next_cursor from a previous response to retrieve the next page
order_byNoSort order (default: 'created_datetime:desc')
user_idsNoFilter events by the IDs of the users who triggered them. The Gorgias API expects an array of integers.
object_idNoFilter events by the ID of the associated object (e.g., ticket ID, customer ID)
object_typeNoFilter events by the type of the associated object. The API requires object_id when object_type is provided.
created_datetimeNoFilter events by creation datetime. Object of comparator -> ISO 8601 datetime, e.g. { gte: '2026-01-01T00:00:00Z', lt: '2026-02-01T00:00:00Z' }.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the description adds cursor pagination and default ordering context. However, it does not mention response format, rate limits, or behavior beyond what annotations already imply.

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 concise, containing only two sentences that immediately state the endpoint, purpose, and key behaviors. Every phrase adds value, with no redundancy.

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 rich schema and annotations, the description covers the essential behavior for a list tool. It could explicitly mention response shape (e.g., next_cursor), but the cursor parameter description compensates, making it 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 provides 100% coverage with detailed descriptions for all 8 parameters. The description simply summarizes the filterable fields without adding new meaning or relationships beyond the 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 it lists events, with the exact endpoint, pagination behavior, and supported filters. This distinctly sets it apart from gorgias_get_event, which retrieves a single event.

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 gorgias_get_event or other list tools. It only describes what it does, without stating scenarios, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_integrationsList IntegrationsA
Read-only

GET /api/integrations — List integrations matching the given parameters, paginated. Returns a cursor-based paginated list of Integration objects for the account.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by integration type. Only 'http' is supported as a filter value, though other types (phone, email, gorgias_chat, etc.) exist in the system.
limitNoMaximum number of integrations to return per page (default: 30)
cursorNoPagination cursor from a previous response (value of meta.next_cursor or meta.prev_cursor)
order_byNoSort order. Default: created_datetime:desc.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds value by disclosing that results are cursor-based paginated and scoped to the account, which goes beyond the annotations. It doesn't discuss rate limits or error behavior, but the annotation coverage lowers the burden.

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 HTTP method and resource, then adds key details about filtering and pagination. Every word earns its place with no redundancy or verbosity.

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?

The combination of description and schema is fairly complete: it explains the return type (Integration objects), pagination mechanism (cursor-based), and account scope. With no output schema, the description's mention of the return type is helpful. It could have noted that only 'http' can be filtered, but the schema covers that. Minor gaps remain around fully explaining pagination navigation, but overall it's solid.

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 100%, with detailed descriptions for type, limit, cursor, and order_by. The description's phrase 'matching the given parameters' is generic and adds no new parameter-specific meaning beyond what the schema already provides. Baseline of 3 is appropriate.

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), resource (integrations), and scope (for the account), and mentions the pagination behavior. It distinguishes itself from siblings like gorgias_get_integration (single fetch) and create/update/delete operations by specifying it returns a paginated list.

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 this tool is used to list integrations with optional filters and pagination, but it does not explicitly state when to use this over gorgias_get_integration or other integration-related tools. No exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_jobsList JobsA
Read-only

GET /api/jobs — List all jobs with optional filtering by status/type and cursor-based pagination. Results are ordered by created_datetime descending.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter jobs by type
limitNoMax number of job records to return per page (default: 30)
cursorNoPagination cursor from a previous response (opaque Base64 token)
statusNoFilter jobs by status
order_byNoSort order for results.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safe-read nature is known. The description adds useful behavioral details: the REST endpoint, cursor-based pagination, and ordering by created_datetime descending. It does not contradict the annotations.

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, compact sentence that front-loads the endpoint and resource. It includes the most important information without unnecessary verbosity.

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?

For a read-only list tool with good annotations and full schema coverage, the description covers the essential behavior: endpoint, filtering, pagination, and ordering. It does not describe the return format, but this is inferable for a list operation and no output schema exists. The gap is minor.

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 100%, so all parameters are already documented in the schema. The description mentions status/type filtering and pagination, but these are also covered by the schema descriptions. No additional parameter meaning is added beyond the 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 'GET /api/jobs — List all jobs', identifying the resource and operation with a specific verb. It also mentions optional filtering and pagination, which distinguishes it from sibling tools like gorgias_get_job (single job) and gorgias_create_job.

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 conveys that this tool is for listing jobs, with filtering by status/type, which implies its use case. It does not explicitly exclude alternatives, but the list semantics are clear enough to guide selection. No explicit 'use when' or 'use instead' is given, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_macrosList MacrosA
Read-only

GET /api/macros — List all macros with optional filtering by search query, tags, languages, archived status, and relevance to a ticket. Supports cursor-based pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter macros containing all tags in the given list
limitNoMax number of macros to return per page (default: 30, max: 100)
cursorNoPagination cursor from a previous response
searchNoFilter macros containing the given search query
archivedNoFilter by archived status. If true, only archived macros are returned. Defaults to false.
order_byNoSort order for macros. When using relevance sorting, ticket_id is required.
languagesNoFilter macros containing any language in the given list (ISO 639-1 codes)
ticket_idNoOrder macros by the most relevant ones to reply to the given ticket. Required when order_by is 'relevance'.
message_idNoOrder macros by the most relevant ones to reply to the given message. Requires order_by='relevance' and ticket_id.
number_predictionsNoNumber of relevant macros to return on top of the list (default: 0)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only operation. The description adds behavioral context by specifying that it supports cursor-based pagination and that it lists all macros, not just a single one. It does not contradict annotations and provides additional detail about the operation's scope.

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 two sentences, front-loaded with the HTTP method and core purpose. It lists filter types and pagination without wasted words, making it highly scannable.

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?

For a list tool with 10 optional parameters and no output schema, the description gives a good overview of capabilities: listing all macros, filtering options, and pagination. It doesn't detail response structure, but the absence of an output schema means the tool's purpose as a list operation is clear enough.

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 100%, so each parameter is already well-documented with descriptions. The description only summarizes the filter categories, which aligns with the schema but doesn't add new semantics beyond what's already present.

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 'List all macros' which identifies the action and resource. It also lists optional filters and pagination, distinguishing it from singular get_macro and mutation macros.

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 provides clear context for when to use this tool: to list all macros with optional filtering. It doesn't explicitly name alternative tools, but the context is sufficient for an agent to distinguish this from create/update/delete/get macro operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_messagesList MessagesA
Read-only

GET /api/messages — List messages across all tickets with cursor-based pagination. Optionally filter to a specific ticket with ticket_id. Results ordered by created_datetime descending by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of messages to return per page (default: 30, max: 100)
cursorNoPagination cursor from a previous response's meta.next_cursor or meta.prev_cursor. Omit to start from the first page.
order_byNoSort order for messages (default: created_datetime:desc)
ticket_idNoFilter messages to those belonging to a specific ticket ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is known. The description adds valuable behavioral context beyond annotations: cursor-based pagination, default ordering by created_datetime descending, and the optional ticket filter. This goes beyond what annotations provide.

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 two sentences, front-loaded with the HTTP method and endpoint, and concisely covers scope, pagination, filtering, and ordering. 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?

For a list tool with no output schema, the description covers all key aspects: what is listed, pagination mechanism, ordering, and filtering. It lacks mention of response structure, but that is often implied for list endpoints and the schema provides parameter details. The description is complete enough for an agent to invoke correctly.

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 input schema covers 100% of parameters with detailed descriptions, so the baseline is 3. The description adds minimal extra semantic value—it repeats the ticket_id filter and default ordering, but does not introduce any new meaning beyond the schema's existing descriptions.

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 messages across all tickets, with specific features like cursor-based pagination, optional ticket_id filtering, and default ordering. It distinguishes from siblings like gorgias_list_ticket_messages and gorgias_get_message by explicitly scoping to 'across all tickets'.

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 provides clear context for when to use the tool (listing messages globally, optionally filtered by ticket). However, it does not explicitly mention alternatives or when not to use it, especially given the existence of sibling gorgias_list_ticket_messages which likely serves per-ticket listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_rulesList RulesA
Read-only

GET /api/rules — List all rules with cursor-based pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per page (default: 100, max: 100)
cursorNoPagination cursor from a previous response (value of meta.next_cursor)
order_byNoSort order. Default: created_datetime:desc.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds cursor-based pagination behavior, which is valuable beyond annotations. It does not contradict annotations and gives a hint about the response pattern.

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 that packs the endpoint, action, resource scope, and pagination type. Every word contributes value, with no redundancy or irrelevant details.

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?

For a simple read-only list tool with optional pagination parameters and no output schema, the description covers the essential purpose and behavior. It could mention return format, but the annotations and sibling context make the tool's usage clear enough.

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 input schema provides 100% coverage with detailed descriptions for limit, cursor, and order_by (including default and max). The description adds no additional parameter semantics, so the baseline of 3 is appropriate.

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 'List all rules' with the HTTP endpoint, specifying the verb (GET) and resource (rules). This distinguishes it from sibling tools like get_rule (single rule) or mutation tools.

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 provides clear context: it is for listing all rules with pagination. It does not explicitly name alternatives, but the sibling tool list makes it obvious that get_rule is for individual rules. There are no explicit exclusions, but the use case is unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_satisfaction_surveysList Satisfaction SurveysA
Read-only

GET /api/satisfaction-surveys — List all satisfaction surveys with cursor-based pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per page (default: 30)
cursorNoPagination cursor from a previous response (value of meta.next_cursor)
order_byNoSort order, e.g. 'created_datetime:desc'

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description has a lower burden. It adds the behavioral detail of cursor-based pagination, which is useful, but does not disclose response shape, default limits, error behavior, or any additional constraints. Thus, it makes a moderate contribution beyond annotations.

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, front-loaded with the HTTP method and endpoint, followed by a concise summary of the action and pagination. Every word earns its place with no redundancy or fluff.

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?

For a simple, read-only list tool with optional parameters and no output schema, the description adequately covers the action, scope, and pagination mechanism. It lacks an explicit description of the response structure, but given the low complexity and strong annotations, this is a minor gap.

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 input schema has 100% coverage with clear descriptions for all three parameters (limit, cursor, order_by). The description adds no parameter-specific meaning beyond what the schema already provides, so the baseline of 3 applies.

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 the specific verb 'List' with the resource 'satisfaction surveys' and explicitly states scope ('all'), clearly distinguishing it from singular get or mutating create/update siblings. It also mentions cursor-based pagination, adding a specific and useful behavioral detail.

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 alternatives such as gorgias_get_satisfaction_survey for a single survey or gorgias_create_satisfaction_survey for creation. No context or exclusions are given; the usage is only implied by the verb 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_tagsList TagsA
Read-only

GET /api/tags — List all tags with optional filtering and cursor-based pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per page (default: 30)
cursorNoPagination cursor from a previous response
searchNoCase-insensitive search on tag names
order_byNoSort order. Default: created_datetime:desc. Usage sorts require a secondary name sort (e.g. 'usage:desc,name:desc').

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds that pagination is cursor-based, which provides some behavioral context, though it's also reiterated in the parameter schema. No additional side effects or limitations are disclosed.

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, efficiently conveying the HTTP method and core functionality. No wasted words.

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?

For a simple list tool with full schema coverage and read-only annotations, the description is adequate but lacks detail on the response structure (e.g., returned fields, pagination metadata). It also doesn't mention any usage exclusions. Slightly incomplete for a tool with no output schema.

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 100%, so the schema already documents all parameters. The description's mention of 'optional filtering' is generic and doesn't add specifics beyond the schema's parameter descriptions.

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 tags, includes optional filtering and pagination, and provides the HTTP method. The verb 'list' and resource 'tags' distinguish it from sibling tools like gorgias_get_tag (singular).

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 its usage as a listing endpoint but does not explicitly state when to use it versus alternatives like gorgias_get_tag or gorgias_create_tag. There is no exclusion or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_teamsList TeamsA
Read-only

GET /api/teams — List teams matching the given parameters, ordered. Returns a cursor-based paginated response with data array and meta.next_cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results per page (default: 30)
cursorNoPagination cursor from a previous response to advance to the next page
order_byNoAttribute used to order teams (default: created_datetime:desc)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable context: it returns a cursor-based paginated response with a data array and meta.next_cursor, and confirms ordering. This goes beyond the structured annotations without contradicting them.

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 the REST method, path, purpose, and response format. No redundant content or unnecessary filler.

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?

For a read-only list with 3 optional parameters and no output schema, the description adequately covers purpose, filtering, ordering, and pagination format. It does not mention error cases or defaults, but those are not critical given the schema and simplicity.

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 covers 100% of parameters with detailed descriptions. The description only says 'matching the given parameters' and 'ordered', which does not add meaning beyond the schema. Baseline 3 applies as the schema does the heavy lifting.

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 'List teams matching the given parameters, ordered' with the endpoint 'GET /api/teams'. It distinctly identifies a batch-list operation, differentiated from siblings like gorgias_get_team (single team) and gorgias_create_team.

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 context is clear that this tool lists teams, implying use when retrieving multiple teams or applying filters. It does not explicitly mention alternatives, but the verb and resource make the use case obvious, and there are no exclusions or misleading statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_ticket_fieldsList Ticket Custom Field ValuesA
Read-only

GET /api/tickets/{ticket_id}/custom-fields — List all custom field values currently assigned to a specific ticket. Returns {data: [...]} with an array of field-value objects. Each item has 'field' (nested object with 'id', 'label', 'object_type', 'definition'), 'prediction', and 'value'. Use field.id as the identifier for update/delete operations on this ticket's custom field values.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesThe unique ID of the ticket whose custom field values to list

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare this a read-only operation, and the description adds valuable detail beyond that: the response envelope ({data: [...]}), the exact structure of each item (field, prediction, value), and the behavioral note that field.id serves as the identifier for subsequent mutation operations. This is meaningful context not present in the annotations.

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 two sentences, front-loaded with the endpoint and action, followed by the response shape and a usage hint. Every clause earns its place: endpoint, purpose, return format, item structure, and actionable guidance. No wasted words or repetition of schema information.

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?

For a simple read-only list operation with a single parameter and no output schema, the description is unusually thorough: it gives the endpoint, the response structure, the item attribute names, and how to use the returned IDs for mutations. It lacks only details like pagination or error handling, which are not critical for this simple endpoint. The presence of sibling tools is handled by the clear scoping to ticket custom field values.

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 input schema fully describes ticket_id with a clear description, and the schema coverage is 100%. The tool description does not add any extra parameter-level semantics beyond what the schema already provides. It does explain the return structure in the context of the item, but not the parameter itself, so a baseline score of 3 is appropriate.

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 custom field values for a specific ticket using the GET endpoint. It distinguishes itself from siblings like gorgias_list_custom_fields (which lists field definitions) and gorgias_list_customer_field_values (which handles customer, not ticket, fields). The verb 'list' plus the resource 'ticket custom field values' makes the purpose unambiguous.

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 provides clear context: use when you need custom field values assigned to a specific ticket. It also gives follow-up guidance, noting that field.id is used for update/delete operations. However, it does not explicitly compare with alternative sibling tools or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_ticket_messagesList Ticket MessagesA
Read-only

GET /api/tickets/{ticket_id}/messages — List raw messages for a ticket. For a clean, projected conversation view with chronological sorting and internal note detection, use gorgias_smart_get_ticket instead. NOTE: This endpoint is deprecated; prefer gorgias_list_messages with ticket_id filter for pagination support.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesThe unique ID of the ticket whose messages to list

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read-only nature is covered. The description adds behavioral context beyond annotations: raw message format, deprecation status, and lack of pagination support, which helps the agent understand expected behavior and limitations.

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 compact and front-loaded with the endpoint and action, followed by two precise sentences of guidance. No word is wasted; deprecation and alternatives are efficiently conveyed.

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?

For a single-parameter read-only tool, the description covers the core purpose, deprecation, and alternatives. However, it does not explicitly state what the raw response contains or note pagination behavior of the current endpoint, though the deprecation note implies limitations. Still, completeness is strong for the tool's simplicity.

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 100% with ticket_id fully described as 'The unique ID of the ticket whose messages to list.' The description only references ticket_id in the endpoint URL without adding extra parameter semantics, matching the baseline for high schema 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?

The description clearly states 'List raw messages for a ticket' with the HTTP endpoint, making the action and resource explicit. It distinguishes itself from gorgias_smart_get_ticket and gorgias_list_messages by noting the alternative use cases, so the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly directs when to use alternatives: 'use gorgias_smart_get_ticket instead' for a clean projected view, and 'prefer gorgias_list_messages with ticket_id filter for pagination support.' It also flags the endpoint as deprecated, providing clear decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_ticketsList TicketsA
Read-only

GET /api/tickets — Returns a paginated list of raw ticket data. For intelligent search with auto-detection of emails, names, views, and keywords, use gorgias_smart_search instead. Supports filtering by customer, external ID, view, rule, specific ticket IDs, and whether to include trashed tickets. Uses cursor-based pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of tickets to return per page (default: 30, max: 100)
cursorNoPagination cursor from a previous response to retrieve the next or previous page
rule_idNoID of a rule — returns tickets matching the filters of that rule
trashedNoWhether to include trashed tickets in the response. Per the Gorgias API spec, the default is true (trashed tickets ARE included by default). Pass false to exclude them.
view_idNoID of a view — returns tickets matching the filters of that view
order_byNoAttribute used to order tickets. Default: 'created_datetime:desc'
ticket_idsNoArray of specific ticket IDs to retrieve (max 100)
customer_idNoID of a customer — returns only that customer's tickets
external_idNoID of the ticket in a foreign system — returns tickets matching this external ID

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is known. The description adds behavioral context by noting the tool returns 'raw ticket data' and uses 'cursor-based pagination,' which helps the agent understand the output and pagination behavior beyond the basic read-only hint. It does not disclose rate limits or error cases, but given the annotation coverage, the added context is sufficient.

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 three sentences with no filler. It front-loads the endpoint and core purpose, then immediately gives the alternative for intelligent search, followed by a concise list of filters and pagination. Every sentence earns its place, making it both efficient and readable.

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?

Even without an output schema, the description thoroughly conveys the tool's role, capabilities, and relationship to a sibling tool. It mentions the endpoint, pagination, filtering options, and trashed-ticket behavior, which is complete for a list-like operation. The agent can confidently decide when and how to invoke this tool based on the description alone.

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 input schema already provides 100% coverage of all 9 parameters with descriptions, so the description does not need to add new syntax details. It does summarize the key filtering categories (customer, external ID, view, rule, ticket IDs, trashed), which helps the agent quickly grasp capabilities, but this is a recap rather than new semantic meaning. Thus, the schema remains the primary source of parameter detail.

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 it returns a paginated list of raw ticket data via a GET request, making the purpose specific and actionable. It also distinguishes itself from the sibling tool gorgias_smart_search by explicitly naming that alternative for intelligent search, which eliminates ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit when-not-to-use directive: 'For intelligent search with auto-detection of emails, names, views, and keywords, use gorgias_smart_search instead.' This clearly guides the agent away from this tool for intelligent search and implies it is the right choice for raw, filterable ticket lists, covering both selection and exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_ticket_tagsList Ticket TagsA
Read-only

GET /api/tickets/{ticket_id}/tags — List all tags currently associated with a specific ticket. Returns {data: [...]} with a tag array (not cursor-paginated). Each tag includes id, name, description, decoration, usage count, uri, and timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
ticket_idYesThe unique ID of the ticket whose tags to list

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, establishing safety. The description adds valuable behavioral context by stating the response is 'not cursor-paginated' and specifying the return shape ({data: [...]} with tag array and fields), which is beyond what annotations provide. This helps the agent understand pagination and output expectations.

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?

Two sentences, front-loaded with the endpoint and purpose, followed by essential response details. Every sentence earns its place with no redundant information.

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?

For a simple read-only list tool, the description covers the purpose, response format, pagination behavior, and field contents. Combined with strong annotations and full schema coverage, the agent has all needed context to select and invoke the tool correctly. No output schema exists, but the description compensates by detailing return values.

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 100% for the single parameter, with ticket_id described as 'The unique ID of the ticket whose tags to list'. The description does not add additional semantic meaning beyond the schema, so the baseline score of 3 applies.

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 'List all tags currently associated with a specific ticket' using a specific verb and resource. It distinguishes itself from sibling tools like gorgias_list_tags (global tag list) and gorgias_add_ticket_tags/remove_ticket_tags (mutations) by focusing on a specific ticket's tags.

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 context is clear: use this when you need tags for a specific ticket. It does not explicitly mention alternatives or exclusion cases, but the specificity of 'associated with a specific ticket' provides strong contextual guidance. A slightly higher score would require explicit sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_usersList UsersA
Read-only

GET /api/users — List users with cursor-based pagination. Supports filtering by email, external ID, role, search term, and ordering.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoFilter by exact email address.
limitNoMaximum number of users to return per page (default: 30, max: 100)
rolesNoFilter by role names. Common values: 'admin', 'agent'.
cursorNoPagination cursor from a previous response (meta.next_cursor or meta.prev_cursor)
searchNoFree-text search against user name and email.
order_byNoSort order, e.g. 'name:asc', 'email:desc', 'created_datetime:desc'.
external_idNoFilter by external_id (foreign system identifier).
available_firstNoIf true, prioritise currently available users in the result order.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description adds valuable behavioral traits such as cursor-based pagination and the supported filter fields. It does not contradict annotations and provides useful context beyond the safety hints.

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, efficient sentence, front-loaded with the HTTP method and resource, and lists key capabilities without any filler. Every word earns its place.

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 full schema coverage and annotations, the description provides a solid overview of the tool's purpose, pagination, and filters. However, with no output schema, it does not explicitly describe the response shape (e.g., paginated list with cursors), which is a minor gap.

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 100%, so the baseline is 3. The description summarizes several filter parameters (email, external ID, role, search, ordering) but does not add syntax or semantics beyond the schema. Other params (limit, cursor, available_first) are only covered by the 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 'GET /api/users — List users' with a specific verb and resource, and enumerates filtering and pagination capabilities, distinguishing it from user mutation tools and other list tools.

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 implicitly conveys when to use the tool (whenever listing users with filters/pagination) but does not explicitly compare with alternatives like get_user for single-user retrieval. It provides clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_view_itemsList View ItemsA
Read-only

GET /api/views/{view_id}/items — List the tickets belonging to a view with cursor-based pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return per page (default: 30, max: 100)
cursorNoPagination cursor indicating current position in the list. Omit for the first page.
view_idYesThe ID of the view to list items from
order_byNoAttribute used to order view items. Overrides the view's default ordering if specified.
directionNoPagination direction: 'next' returns items after the cursor, 'prev' returns items before
ignored_itemNoID of a ticket to exclude from results (useful when items shift between pages due to real-time updates)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and mutability are covered. The description adds that this is a GET request listing tickets with cursor-based pagination, but it does not explain the open-world behavior or describe the response structure. No contradiction with annotations.

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 that front-loads the endpoint and clearly states the action and the pagination trait. It is appropriately sized with 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?

For a read-only list tool with a well-described schema and good annotations, this description is mostly sufficient. It clearly identifies the resource (tickets in a view) and pagination style, though it could be more complete by mentioning the return shape and explicitly differentiating from similar list/search tools.

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?

All parameters have descriptions in the schema (100% coverage), so the description does not need to explain each parameter. The phrase 'cursor-based pagination' adds slight context for cursor/direction/limit, but it does not add meaningful semantics beyond what the schema already provides.

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 states the specific verb 'List' and the specific resource 'tickets belonging to a view', which clearly distinguishes it from sibling tools like gorgias_list_tickets (all tickets) or gorgias_search_view_items (search across views). The endpoint path reinforces the action.

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 used when you have a view_id and want to list its tickets, and it mentions cursor-based pagination. However, it does not explicitly compare against alternatives such as gorgias_search_view_items or gorgias_list_tickets, nor does it state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_viewsList ViewsA
Read-only

GET /api/views — List all views with cursor-based pagination. Template variables in filters are resolved to the authenticated user's values.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of views to return per page (default: 30, max: 100)
cursorNoPagination cursor from a previous response (meta.next_cursor or meta.prev_cursor)
order_byNoOrdering of views in the response (default: 'created_datetime:desc')

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe/read-only nature is covered. The description adds actionable behavioral detail: template variables in filters are resolved to the authenticated user's values, which is not captured in annotations or schema. This is a meaningful addition beyond what structured fields already communicate.

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 two sentences, front-loaded with the endpoint and action. It contains no filler or redundancy, every word earns its place.

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?

For a list operation with no required parameters, good annotations, and a clear endpoint, the description covers pagination and a non-obvious behavior (template variable resolution). No output schema exists, so the response structure is not explained, but this is a minor gap for a simple list tool. Overall, it is sufficient for an agent to invoke correctly.

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 covers 100% of parameter descriptions, including limit, cursor, and order_by with clear explanations. The description's mention of cursor-based pagination aligns with the cursor parameter but does not add new details beyond the schema. Hence, baseline 3 is appropriate.

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 all views') and resource ('views'), with a specific endpoint. It distinguishes from sibling tools like gorgias_get_view (single view) and gorgias_list_view_items (items within a view) by indicating this is a list operation for views.

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 listing views, and mentions cursor-based pagination, but does not explicitly state when to use this versus alternatives (e.g., gorgias_get_view for a single view). The context is clear enough, but no exclusions or alternative recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_voice_call_eventsList Voice Call EventsA
Read-only

GET /api/phone/voice-call-events — List voice call events, cursor-paginated. Events represent discrete occurrences during the lifecycle of voice calls. Per the Gorgias API spec, this endpoint accepts only cursor, limit, and call_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of records to return per page (1-100, default 30)
cursorNoPagination cursor for fetching the next or previous page
call_idNoFilter events to those belonging to a specific voice call

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=true, and the description adds cursor-paginated behavior and the strict parameter allowance ('only cursor, limit, and call_id'), which are not in annotations. It does not describe rate limits or ordering but adds meaningful constraints beyond the structured data.

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?

Three concise, front-loaded clauses: endpoint and action first, then definition and constraint. No filler and every sentence contributes useful information.

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?

For a read-only cursor-paginated list with complete schema, the description adequately defines the resource, pagination, and parameter restriction. It does not detail the return shape, but no output schema exists and sibling get_voice_call_event likely covers event details.

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?

Input schema covers all three parameters with descriptions, so baseline is 3. The description adds only the 'only' restriction and cursor-paginated framing; it does not elaborate on parameter semantics beyond what the schema already provides.

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?

States 'List voice call events' with the endpoint path, defines events as 'discrete occurrences during the lifecycle of voice calls,' and cursor-paginated scope differentiates it from single-event retrieval and call listing tools.

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 for listing events and filtering by call_id, but does not explicitly state when to prefer this over alternatives or mention tools like get_voice_call_event or list_voice_calls. The 'accepts only cursor, limit, and call_id' constraint provides some selection guidance but no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_voice_call_recordingsList Voice Call RecordingsA
Read-only

GET /api/phone/voice-call-recordings — List voice call recordings (voicemails and call recordings), cursor-paginated. Per the Gorgias API spec, this endpoint accepts only cursor, limit, and call_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of records to return per page (1-100, default 30)
cursorNoPagination cursor for fetching the next or previous page
call_idNoFilter recordings to those belonging to a specific voice call

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the description's addition of 'cursor-paginated' and the explicit accepted-parameter list provides useful behavioral context (pagination and filtering constraints) without contradicting annotations.

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 compact, front-loaded with the HTTP method and direct action, and includes only necessary clarifications about the resource and accepted parameters. There is no wasted wording.

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?

For a simple, read-only listing endpoint with no output schema, the description sufficiently covers the resource type, pagination behavior, and the only supported parameters. It is complete enough for an agent to select and invoke the tool correctly.

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 input schema fully describes all three parameters with types and meanings, so the description's mention of 'only cursor, limit, and call_id' adds no new semantic value. It merely reiterates schema information, warranting the baseline score.

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' with the resource 'voice call recordings,' clarifies 'voicemails and call recordings,' and notes cursor pagination. This distinguishes it from single-resource siblings like gorgias_get_voice_call_recording and from delete operations.

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 provides clear context that this is a listing operation but does not explicitly contrast it with alternatives or specify when to use it versus getting or deleting a single recording. The note about accepting only cursor, limit, and call_id implies a narrow scope, but no direct 'when to use' guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_voice_callsList Voice CallsA
Read-only

GET /api/phone/voice-calls — List voice calls, cursor-paginated. Per the Gorgias API spec, this endpoint accepts only cursor, limit, and ticket_id as query parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of voice call records to return per page (1-100, default 30)
cursorNoCursor value for pagination (use next_cursor or prev_cursor from a previous response)
ticket_idNoFilter voice calls belonging to a specific ticket

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not burdened with stating safety. It adds valuable behavioral context by specifying cursor-paginated behavior and the constraint that only cursor, limit, and ticket_id are accepted. This goes beyond the annotations and schema, providing insight into how the endpoint behaves.

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 two sentences, front-loaded with the HTTP method and endpoint, and every phrase contributes information. It avoids fluff and is appropriately sized for the tool's simplicity.

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?

For a simple list operation with no output schema, the description covers the essential behavior: what it does, how it paginates, and which parameters are allowed. It does not describe the response format, but the annotations (readOnlyHint) and parameter schema provide sufficient context. The pagination mention is valuable, and the tool is not complex enough to require more.

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 100%, with each parameter (limit, cursor, ticket_id) having a clear description. The description adds the note that the endpoint accepts 'only' these parameters, which is a slight constraint but largely redundant with the schema since only these are defined. It adds little beyond what the schema already provides.

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 'List' and the resource 'voice calls', with the explicit endpoint path 'GET /api/phone/voice-calls'. It distinguishes from sibling tools like gorgias_get_voice_call by indicating the plural, list-oriented nature, and the cursor-paginated behavior is a specific characteristic.

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 provides clear context: it is for listing voice calls with cursor-based pagination, and it notes the accepted query parameters. However, it does not explicitly mention when to prefer this over alternatives (e.g., gorgias_get_voice_call) or when not to use it, so it stops short of full explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_list_widgetsList WidgetsA
Read-only

GET /api/widgets — List all widgets for the account, ordered.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of widgets to return per page (default: 30)
app_idNoThe ID of the 3rd party app to filter the widgets list by
cursorNoCursor value for cursor-based pagination (use value from a previous response)
order_byNoAttribute used to order widgets (default: 'created_datetime:desc')
integration_idNoThe ID of the integration to filter the widgets list by

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds the HTTP method and that results are ordered, but it does not mention pagination behavior, response format, or any potential operational details beyond the annotations and schema.

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 includes the HTTP method, resource path, action, scope, and ordering behavior. There is no redundant or filler content, making it appropriately concise.

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 tool's simplicity, the well-documented schema, and the helpful annotations, the description is mostly sufficient. It lacks explicit information about return value shape or pagination semantics, but the 'list all' phrasing combined with the schema's limit/cursor parameters provides adequate context for an AI agent.

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 100%, with all five parameters documented in the input schema. The description adds no distinct parameter semantics; it only hints at ordering, which is already represented by the order_by parameter. A baseline of 3 is appropriate since the schema carries the parameter documentation burden.

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 states 'GET /api/widgets — List all widgets for the account, ordered.' It uses a specific verb ('List'), identifies the resource ('widgets'), and clarifies account scope, distinguishing it from sibling tools like get_widget, create_widget, update_widget, and delete_widget.

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 provides clear context: use this tool to list all widgets for the account. It does not explicitly name alternatives or state when not to use it, but the resource name and 'list' verb make the usage context obvious relative to sibling get/create/update/delete widget tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_merge_customersMerge CustomersA
DestructiveIdempotent

PUT /api/customers/merge — Merge two customers. The source customer's data is merged into the target customer, then the source is deleted. Fails with 409 if both customers have data for the same integration.

ParametersJSON Schema
NameRequiredDescriptionDefault
metaNoUser-defined JSON metadata to set on the target customer during merge.
nameNoFull name to set on the target customer during merge.
noteNoNote to set on the target customer during merge.
emailNoPrimary email address to set on the target customer during merge.
channelsNoContact channels to set on the target customer during merge.
languageNoPreferred language (ISO 639-1) to set on the target customer during merge.
timezoneNoTimezone (IANA name) to set on the target customer during merge.
source_idYesThe ID of the customer to merge (the source). This customer will be deleted after the merge.
target_idYesThe ID of the target customer (which will still exist after the merge).
external_idNoExternal ID to set on the target customer during merge.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds critical behavior beyond annotations: the source customer is deleted after the merge, and the operation fails with 409 if both customers share data for the same integration. This complements the destructiveHint and readOnlyHint annotations without contradiction.

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 concise two-sentence summary that front-loads the endpoint and core action, then adds a key failure condition. No wasted words or redundant restatements.

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 the detailed schema and annotations, the description is sufficiently complete: it explains the purpose, the destructive side effect, and a significant error case. No output schema exists, so return value explanation is not required.

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 100%, so the schema already fully documents all parameters. The description adds context about merge behavior but does not elaborate on individual parameter formats or special values beyond what is in the schema. Baseline of 3 applies.

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 specific verb 'merge' with the resource 'two customers' and explains the source-to-target data flow plus deletion of the source. This distinguishes it from sibling tools like delete_customer or update_customer.

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 usage is implied by the operation itself (merge two customers), but there is no explicit guidance on when to use this vs alternatives such as combining delete+create or updating fields individually. No exclusions or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_merge_tagsMerge TagsA
DestructiveIdempotent

PUT /api/tags/{destination_tag_id}/merge — Merge one or more source tags into a destination tag. Source tags are deleted after merge.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_tags_idsYesArray of source tag IDs to merge into the destination
destination_tag_idYesThe ID of the tag to merge into (destination)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, and the description adds valuable context: 'Source tags are deleted after merge.' This goes beyond the annotation by specifying exactly what is destroyed. No contradiction with annotations.

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 that is front-loaded with the endpoint and action. No wasted words; every part contributes to understanding.

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?

For a simple merge tool with two fully described parameters and strong annotations, the description covers the essential behavior including the destructive aspect. No output schema exists, but the description does not explain the response; however, this is not critical for a merge action.

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 provides 100% coverage for both parameters, so the description does not need to add much. The description mentions destination and source but does not add meaning beyond the schema's property descriptions. Baseline 3 is appropriate.

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 operation: merging source tags into a destination tag. The specific verb 'merge' and the resource 'tags' distinguish it from siblings like delete_tag or delete_tags. The endpoint is also provided for precision.

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 by defining the action, but it does not explicitly state when to use this tool versus alternatives like gorgias_delete_tag or gorgias_merge_customers. There is no exclusion or alternative mention, so the guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_remove_ticket_tagsRemove Ticket TagsA
DestructiveIdempotent

DELETE /api/tickets/{ticket_id}/tags — Remove specific tags from a ticket. Only the specified tags are removed; other tags remain. Tags can be specified by IDs, names, or both. At least one of 'ids' or 'names' must be provided. Returns 204 with empty body on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoArray of tag IDs to remove from the ticket
namesNoArray of tag names to remove from the ticket (case-sensitive)
ticket_idYesThe unique ID of the ticket to remove tags from

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructive, idempotent), the description discloses the HTTP method, that tags can be specified by IDs/names/both, the partial removal behavior, and the 204 empty body response. This gives the agent a clear picture of runtime behavior.

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?

Three tightly-worded sentences front-load the endpoint and action, then provide essential detail without fluff. Every sentence earns its place.

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?

Despite no output schema, the description states the 204 success response, covers the parameter combination rule, and clarifies scope (only specified tags removed). Sibling tool names provide additional context, but the description is self-sufficient.

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?

Schema covers parameter descriptions, but the description adds critical usage semantics: tags can be specified by IDs, names, or both, and at least one of them must be provided. This goes beyond the schema's optional field flags and enforces a business rule.

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 states the specific action 'Remove specific tags from a ticket' with the endpoint, and clarifies that only specified tags are removed while others remain. This clearly distinguishes from sibling tools like add_ticket_tags, set_ticket_tags, and delete_tag.

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 usage context (selective removal) with 'Only the specified tags are removed; other tags remain,' and sets a precondition requiring at least one of 'ids' or 'names'. However, it does not explicitly name alternatives like set_ticket_tags when a full replacement is intended.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_retrieve_accountRetrieve AccountA
Read-only

GET /api/account — Retrieve your account information including metadata and account-wide settings. No parameters required; the account is determined by authentication credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description doesn't need to restate safety. It adds useful context beyond annotations by specifying that the account is tied to authentication credentials and that the returned data includes metadata and account-wide settings, giving the agent a clearer picture of the tool's behavior.

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 two short sentences, front-loaded with purpose and endpoint, followed by a key usage note. Every word earns its place with no fluff or redundancy.

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?

This is a simple read-only tool with no parameters, no output schema, and strong annotations. The description fully covers what it does, what it returns, and how the account is identified, making it complete for its complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the schema provides no semantics. The description explicitly states 'No parameters required' and explains that the account is determined by authentication credentials, fully clarifying the parameter situation and going beyond the baseline for param-less tools.

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 ('Retrieve') and identifies the exact resource ('account information including metadata and account-wide settings'). It even includes the HTTP endpoint for traceability. This clearly distinguishes it from sibling tools like list_account_settings, which focus on settings lists rather than the account object itself.

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 provides clear context: no parameters are required, and the account is determined by authentication credentials. This tells the agent when to use the tool and what to expect. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_retrieve_reporting_statisticRetrieve Reporting StatisticA
Read-only

POST /api/reporting/stats — Low-level reporting API. For easier stats with automatic scope defaults, dimension validation, agent name resolution, and date handling, use gorgias_smart_stats instead. Retrieve analytics reporting statistics data. The request body contains a query object whose structure is determined by the scope field. Supports filtering, grouping by dimensions, selecting measures, time-based analysis, and custom sorting. Available scopes (27 total): tickets-closed (closed ticket stats), tickets-created (created ticket stats), tickets-open (open ticket stats), tickets-replied (replied ticket stats), one-touch-tickets (resolved with one interaction), zero-touch-tickets (resolved without agent interaction), satisfaction-surveys (customer satisfaction survey data), resolution-time (time to resolve tickets), messages-sent (agent messages sent count), first-response-time (time to first agent response including automated), human-first-response-time (time to first human agent response), response-time (overall response time stats), messages-per-ticket (messages per ticket count), ticket-handle-time (agent time handling tickets), online-time (agent online time stats), tags (stats grouped by ticket tags), auto-qa (automated quality assurance scores), messages-received (messages received count), automation-rate (rate of automated interactions), workload-tickets (ticket workload distribution), automated-interactions (automated interaction events), ticket-fields (stats by custom ticket field values), voice-calls (individual voice call records), voice-agent-events (voice call events per agent), ticket-sla (ticket SLA compliance data), knowledge-insights (knowledge base usage insights), voice-calls-summary (aggregated voice call summary stats). Supports cursor-based pagination via query parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of analytics results to return (default: 30, max: 10000).
queryYesThe statistics query object. Its structure depends on the scope value.
cursorNoPagination cursor from a previous response to continue retrieving results.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=true and openWorldHint=true, and the description does not contradict them. The description adds useful behavioral context beyond the annotations, such as the query structure depending on the scope field, support for filtering/grouping/measures/time analysis, and cursor-based pagination. It does not mention rate limits or auth, but the read-only annotation provides a baseline.

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 long but well-structured: it front-loads the core purpose, then the alternative, then capabilities, and finally a comprehensive scope list. The sentence 'Retrieve analytics reporting statistics data' is somewhat redundant with the opening line, but the extensive scope list and procedural details justify the length for a tool of this complexity.

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?

For a complex low-level API with no output schema, the description covers the core aspects: the low-level nature, the alternative, scope semantics, query capabilities, and pagination. It does not explicitly describe the response format, which could be a gap, but the detailed scope and measure/dimension lists give agents enough context to infer expected results.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds significant meaning by enumerating all 27 scopes with parenthetical explanations (e.g., 'tickets-closed (closed ticket stats)'), which goes beyond the schema's bare enum list. This helps the agent select the correct scope and understand the resulting query shape.

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 identifies the tool as 'Retrieve analytics reporting statistics data' and its low-level nature ('POST /api/reporting/stats — Low-level reporting API'). It distinguishes itself from the sibling tool gorgias_smart_stats by positioning itself as the low-level alternative, which makes its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to prefer the alternative: 'For easier stats with automatic scope defaults, dimension validation, agent name resolution, and date handling, use gorgias_smart_stats instead.' This provides clear when-not-to-use guidance and names the alternative, making the use case boundaries explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_search_view_itemsSearch View ItemsA
Read-onlyIdempotent

PUT /api/views/{view_id}/items — Search tickets using inline view configuration. Pass view_id=0 to query dynamically without referencing a saved view.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoInline view configuration specifying filters, ordering, and display fields
limitNoMaximum number of items to return per page (default: 30, max: 100)
cursorNoPagination cursor indicating current position. Omit for the first page.
view_idYesThe ID of the view. Use 0 to dynamically query tickets without referencing a saved view.
order_byNoAttribute used to order view items. Overrides view.order_by if specified.
directionNoPagination direction: 'next' returns items after the cursor, 'prev' returns items before
ignored_itemNoID of a ticket to exclude from results

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering safety. The description adds the HTTP method (PUT) and the dynamic view_id=0 behavior, but no further behavioral details like pagination defaults, auth requirements, or response shape.

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 one sentence, front-loaded with the endpoint and core action. Every word earns its place, with no redundancy or filler.

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 schema is highly detailed and annotations cover safety, but there is no output schema and the description does not mention response format or pagination behavior. For a search tool with nested parameters, a bit more context would improve completeness.

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 100%, so every parameter is already documented in detail. The description adds minimal extra semantic value beyond referencing 'inline view configuration' and explaining view_id=0, which the schema also mentions. Baseline 3 is appropriate.

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 ('Search tickets') and the mechanism ('inline view configuration'), with a notable differentiator: passing view_id=0 enables dynamic querying without a saved view. This distinguishes it from gorgias_list_view_items and other search tools.

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?

It provides clear context by explaining the inline configuration approach and the special view_id=0 behavior for dynamic searches. However, it does not explicitly mention alternatives like gorgias_list_view_items or gorgias_search, leaving the agent to infer when to prefer this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_set_customer_dataSet Customer DataA
Idempotent

PUT /api/customers/{customer_id}/data — Set a customer's data field. Replaces the stored customer data entirely. Supports optimistic concurrency via the version parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe customer data. Free-form JSON field — any valid JSON value is accepted (object, array, string, number, boolean, or null).
versionNoISO 8601 datetime timestamp for optimistic concurrency control. If Gorgias already has a more recent version stored, the request will be silently ignored.
customer_idYesThe ID of the customer to update.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write (readOnlyHint false) and idempotent operation (idempotentHint true). The description adds key behavioral context by stating that the operation 'replaces the stored customer data entirely' and supports optimistic concurrency, which goes beyond what the annotations alone convey. No contradictions.

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 three short sentences that are front-loaded with the HTTP method and purpose. Each sentence delivers distinct information: the action, the replacement behavior, and concurrency support. No redundant or unnecessary 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 simple PUT operation, the description combined with the detailed schema and annotations provides a solid understanding of the tool's behavior and parameters. The main gap is the lack of response/return value information, which would be helpful since there is no output schema, but overall it is sufficiently complete for a straightforward set operation.

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 100%, so the schema fully documents all three parameters. The description adds no extra meaning beyond highlighting the version parameter's role, so it does not enhance the schema's already complete parameter information.

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 sets a customer's data field via HTTP PUT and specifies that it replaces the stored data entirely. This provides a specific verb, resource, and behavioral scope, though it doesn't explicitly contrast with sibling tools like gorgias_update_customer.

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 should be used when you want to replace an entire customer data field, and mentions optimistic concurrency for version control. However, it does not explicitly state when to prefer this over alternatives or when not to use it, leaving usage guidance mostly implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_set_ticket_tagsSet Ticket TagsA
DestructiveIdempotent

PUT /api/tickets/{ticket_id}/tags — Replace the complete list of tags on a ticket. This is destructive — all existing tags not included in the request are removed. To clear all tags, send an empty body {}. Tags can be specified by IDs, names, or both. Returns 202 with empty body on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoArray of tag IDs that should be set on the ticket after this operation
namesNoArray of tag names that should be set on the ticket after this operation (case-sensitive)
ticket_idYesThe unique ID of the ticket whose tags will be replaced

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations by explicitly stating that all existing tags not included are removed, how to clear all tags with an empty body, and that IDs/names can be combined. It also notes the success response (202). This richly complements the destructiveHint annotation.

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?

Five concise sentences cover the endpoint, destructive behavior, clearing mechanism, accepted input formats, and response. No filler or redundancy; every sentence carries meaningful information.

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?

For a destructive tag-replacement tool, the description explains the core behavior, edge case (empty body), input flexibility, and success response. Combined with strong annotations, it is fully sufficient for an agent to invoke the tool correctly.

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?

Schema already provides thorough descriptions for all three parameters (100% coverage). The description adds practical guidance that IDs and names can be used independently or together, and that an empty body clears all tags, which is not obvious from the schema 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 'Replace the complete list of tags on a ticket' with a specific HTTP verb and resource, which distinguishes it from sibling tools like add/remove/list ticket tags. The destructive-replacement behavior is explicit in the first sentence.

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?

Provides clear context for when to use the tool (full replacement) and warns about destruction of omitted tags, but does not explicitly mention alternative tools (e.g., gorgias_add_ticket_tags) for non-destructive updates. This is clear context without direct exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_smart_get_ticketSmart Get TicketA
Read-only

Retrieve a ticket with its full conversation thread, projected to a clean format optimised for LLM consumption. Auto-paginates the messages endpoint up to max_messages (default 1000) so long conversations are returned in full. If the ticket has more messages than max_messages, the response will include truncated=true. Messages are sorted chronologically (oldest first). Use gorgias_smart_search to find tickets first. For raw API data, use gorgias_get_ticket instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the ticket to retrieve with its full conversation
max_messagesNoMaximum number of messages to fetch (default 1000, hard cap 5000). Long-running tickets with more messages than this cap will return truncated=true. Lower this for cheap recall on tickets you only need a summary of; raise it for full audit history.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses crucial runtime behavior beyond the readOnlyHint annotation: auto-pagination up to max_messages, the truncated=true flag for over-cap tickets, and chronological ordering (oldest first). This level of detail helps the agent understand response completeness and memory/processing implications.

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 compact and front-loaded. Each of the four sentences adds distinct value: purpose/format, pagination behavior, truncation flag, and usage guidance. No wasted words or redundancy.

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?

For a tool with no output schema, the description conveys the essential return characteristics (full thread, clean format, pagination, truncation, sort order). It also points to alternative tools for raw data and search. It doesn't spell out the exact fields in the clean format, but the overall behavior is sufficiently covered.

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?

Schema coverage is 100%, providing definitions for both 'id' and 'max_messages'. The description adds value by elaborating on max_messages' purpose (pagination control), default value, hard cap, and the tradeoff for lowering it. This enriches the semantic understanding beyond the schema text.

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 opens with a specific verb+resource: 'Retrieve a ticket with its full conversation thread'. It further clarifies the output is 'projected to a clean format optimised for LLM consumption', and distinguishes itself from the raw 'gorgias_get_ticket' alternative, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Use gorgias_smart_search to find tickets first' and 'For raw API data, use gorgias_get_ticket instead'. It also explains when to tune max_messages (lower for cheap recall, raise for full audit history), giving clear context for effective use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_smart_statsSmart StatsA
Read-only

Retrieve Gorgias analytics with automatic defaults, validation, post-processing, and auto-pagination.

Scopes by category: Volume: tickets-created, tickets-closed, tickets-open, tickets-replied, one-touch-tickets, zero-touch-tickets, workload-tickets Performance: first-response-time, human-first-response-time, response-time, resolution-time, ticket-handle-time Quality: satisfaction-surveys, auto-qa Messages: messages-sent, messages-received, messages-per-ticket Automation: automation-rate, automated-interactions Breakdown: tags, ticket-fields Voice: voice-calls, voice-agent-events, voice-calls-summary Other: online-time, ticket-sla, knowledge-insights

Broken scopes (return API errors): automation-rate, online-time, voice-calls, voice-agent-events, voice-calls-summary.

Auto-pagination: fetches up to 'limit' rows (default 100, max 10000) across multiple upstream pages. For queries producing many rows, use granularity: "none" (aggregate mode) to collapse the time axis. Date range is limited to 366 days per Gorgias API constraint. For manual page control, pass 'cursor' from a previous response's nextCursor field.

For raw API access, use gorgias_retrieve_reporting_statistic.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of rows to return after auto-pagination (default: 100, max: 10000). The tool fetches upstream pages of up to 1000 rows each and accumulates results until this limit is reached or the upstream runs out of data. For queries that would produce far more than 100 rows, prefer 'granularity: "none"' (aggregate mode) over raising this limit.
scopeYesThe statistic scope to query (e.g., 'tickets-created', 'first-response-time'). See tool description for full list by category.
cursorNoAdvanced: opaque pagination cursor from a previous response's nextCursor field. When supplied, the tool fetches a single page and returns its rows + the next cursor. Auto-pagination is disabled in this mode — the caller drives the loop.
filtersNoAdditional filter objects [{member, operator, values}]
end_dateYesEnd date in YYYY-MM-DD format (inclusive — automatically adjusted for Gorgias exclusive filter)
measuresNoSpecific measures to return. Defaults are auto-selected per scope if omitted.
timezoneNoTimezone for the query (default: 'UTC'). Examples: 'America/New_York', 'Europe/London'
dimensionsNoDimensions to group by. Common: 'agent' (or 'agentId'), 'channel', 'team' (or 'teamId'), 'tag' (or 'tagId'). Aliases are auto-resolved.
start_dateYesStart date in YYYY-MM-DD format
granularityNoTime grouping granularity (default: 'day'). Use 'none' for aggregate mode (no time bucketing) — the primary workaround for queries that would produce too many rows when grouped by day.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare readOnlyHint and openWorldHint. The description adds valuable behavioral details: automatic defaults, validation, post-processing, auto-pagination across pages, the 366-day date range constraint, cursor-driven manual pagination, and a list of broken scopes. This significantly exceeds what the annotations convey.

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 longer than average but structured with line breaks and category headers, making it scannable. The first sentence front-loads the core purpose. Some content, such as the exhaustive scope list, is necessary for correct tool selection and could not be easily trimmed without losing value.

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 tool's complexity (10 parameters, many scope options) and the absence of an output schema, the description does a solid job explaining behavior, pagination, and constraints. It covers return-related concepts like rows and nextCursor, though it doesn't fully describe the response shape. Still, it provides enough context for an agent to choose and invoke the tool correctly.

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 input schema already covers all 10 parameters with descriptions (100% coverage), so the baseline is 3. The description goes beyond by grouping scopes by category, calling out broken scopes, explaining when to use granularity 'none', and showing how to use the cursor with nextCursor. These additions give real semantic value beyond the 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 opening sentence states a specific action: 'Retrieve Gorgias analytics with automatic defaults, validation, post-processing, and auto-pagination.' It clearly identifies the resource (Gorgias analytics) and distinguishes itself from the raw sibling tool by explicitly directing raw API needs to gorgias_retrieve_reporting_statistic. The scope categories further clarify what kinds of analytics are included.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool versus the alternative: 'For raw API access, use gorgias_retrieve_reporting_statistic.' It also gives actionable conditions for problematic queries (e.g., use granularity: "none" for many rows) and warns about broken scopes that return API errors. This is strong, practical usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_unarchive_macrosUnarchive Macros (Bulk)A
Idempotent

PUT /api/macros/unarchive — Bulk unarchive multiple previously archived macros by ID. Restores macros to active status. Max 30 IDs per request. Returns per-ID results.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesList of macro IDs to unarchive (min: 1, max: 30 per request)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful operational details beyond the annotations: it states the restoration effect, the bulk limit of 30 IDs, and the per-ID results format. With no output schema, this return format is particularly valuable. It is consistent with the idempotentHint and readOnlyHint=false.

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 compact and front-loaded, starting with the endpoint and primary action, followed by three short sentences each containing a distinct fact: restoration effect, 30-ID limit, and per-ID results. No wasted words.

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?

For a simple one-parameter bulk mutation, the description captures all essential details: endpoint, action, effect, constraint, and response format. It does not need to explain return values further because the per-ID results statement covers it. This is complete for its complexity.

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 fully documents the 'ids' parameter with type, min/max items, and a description, providing 100% coverage. The tool description adds no extra parameter semantics beyond the redundant 'by ID' phrasing, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Bulk unarchive multiple previously archived macros'), the resource (macros), and the effect ('Restores macros to active status'). It distinguishes from siblings by specifying 'previously archived' and the bulk nature, making it distinct from archive/delete operations.

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 when to use it by targeting 'previously archived macros' and specifying the bulk operation (max 30 IDs per request). It doesn't explicitly name alternatives or exclusions, but the context is clear enough for an agent to select it over archive or delete macros tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_account_settingUpdate Account SettingA
Idempotent

PUT /api/account/settings/{id} — Update a setting for the current account. Replaces the existing configuration of the AccountSetting identified by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the setting to update
dataNoThe new configuration data for the setting. Replaces the existing data entirely. Pass null to clear. For 'business-hours': { timezone: string, business_hours: { days: string, from_time: string, to_time: string } }
nameNoHuman-readable name for this setting. Pass null to clear.
typeYesThe type/category of the setting. Should match the existing setting's type (e.g. 'business-hours')

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the key behavioral trait that the operation is a full replacement, not a partial update, which goes beyond the annotation metadata. It also scopes to 'current account', providing additional context beyond the readOnlyHint/idempotentHint annotations.

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 two concise sentences, front-loaded with the HTTP method and endpoint, and includes the essential replacement semantics without any filler. Every word earns its place.

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?

For a straightforward update operation with well-documented parameters and annotations, the description covers the core behavior (full replacement) and scope. It does not mention response format, but with no output schema and simple update semantics, this is a minor gap given the strong schema and annotations.

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 100%, so the schema fully documents all parameters. The description itself does not add parameter-level meaning, but the schema already provides adequate detail (e.g., data replaces existing, type must match). Baseline 3 is appropriate.

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 updates a specific AccountSetting by ID via PUT, distinguishing it from create/list operations. It names the resource and the action with precision.

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 this tool is for updating an existing setting by referencing 'replaces the existing configuration,' but it does not explicitly contrast with creating a new setting using gorgias_create_account_setting. Usage context is implied rather than explicitly directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_customerUpdate CustomerA
Idempotent

PUT /api/customers/{id} — Update an existing customer by ID. Only send the fields you want to modify (partial update semantics).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the customer to update.
metaNoMetadata associated with the customer. Pass null to clear.
nameNoFull name of the customer.
noteNoA note associated with the customer for internal use. Pass null to clear.
emailNoPrimary email address of the customer.
channelsNoThe customer's contact channels. When included, REPLACES all existing channels.
languageNoThe customer's preferred language (ISO 639-1 two-letter code, e.g. 'fr').
lastnameNoLast name of the customer.
timezoneNoThe customer's preferred timezone (IANA timezone name, e.g. 'America/New_York'). Pass null to clear. Default on create: 'UTC'.
firstnameNoFirst name of the customer.
external_idNoID of the customer in a foreign system (Stripe, Aircall, etc.). Not used by Gorgias.
custom_fieldsNoCustom field values to update on this customer.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint false, idempotentHint true), the description adds the crucial partial-update behavior—omitted fields remain unchanged. This is exactly the kind of context that helps an agent avoid overwriting data unintentionally, though it doesn't cover error handling or permission requirements.

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?

Two sentences, front-loaded with the HTTP method and resource, and every word earns its place. The partial-update note is the single most important semantic and is included without any fluff.

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 rich schema and annotations, the description provides the essential behavioral context (partial update) in a concise way. It doesn't enumerate all parameters, but the schema already handles that, and the tool's core purpose is fully covered.

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 input schema has 100% coverage with rich descriptions for all 12 parameters, so the description is not required to repeat them. It adds the general partial-update concept but no per-parameter details beyond what the schema already provides, justifying the baseline score of 3.

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 explicitly states 'Update an existing customer by ID' with the HTTP method, clearly identifying the action and resource. It distinguishes itself from sibling tools like create_customer and delete_customer, and the mention of 'partial update semantics' further clarifies the tool's specific behavior.

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 gives clear context: use this to update an existing customer, and only send the fields you want to modify. It doesn't explicitly mention when not to use it or point to alternative update tools, but the guidance is unambiguous and sufficient for most cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_customer_fieldsUpdate Customer Custom Field Values (Bulk)A
Idempotent

PUT /api/customers/{customer_id}/custom-fields — Update multiple custom field values on a customer in a single request. Each item in the 'fields' array requires 'id' (the CUSTOM FIELD DEFINITION ID from GET /api/custom-fields) and 'value'. Fields not included are left unchanged. Returns array of updated field value objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesArray of custom field updates. Each item needs 'id' (definition ID) and 'value'. The request body sent to the API is this array directly.
customer_idYesThe ID of the customer whose custom field values are being updated

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate a write operation with idempotency, and the description adds valuable behavioral details: partial update semantics (fields not included are left unchanged) and the return format (array of updated field value objects). This goes beyond the structured hints.

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 three sentences long, front-loaded with the endpoint and action, and every sentence provides necessary detail without redundancy. It is highly concise and well-structured.

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?

For a tool with two parameters (one being an array of objects) and no output schema, the description covers the request shape, key field requirements, partial update behavior, and return type. This is complete enough for an agent to invoke it correctly.

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 already provides 100% description coverage for both parameters, including the requirement for 'id' to be the custom field definition ID and the value type rules. The description reinforces this but does not add new semantic meaning beyond what the schema offers, so the baseline of 3 is appropriate.

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 updates multiple custom field values on a customer in a single request, using a specific verb and resource. It distinguishes itself from the singular sibling tool by highlighting the batch nature and the specific endpoint.

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 provides clear context for when to use this tool (to update multiple fields in one request) and explains that omitted fields are left unchanged. However, it does not explicitly name alternatives or say when not to use it, though the bulk vs singular distinction is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_customer_field_valueUpdate Customer Field ValueA
Idempotent

PUT /api/customers/{customer_id}/custom-fields/{id} — Update the value of a single custom field for a given customer. The path 'id' is the custom field definition ID (field.id from GET /api/customers/{customer_id}/custom-fields). Value type must match the field's data_type: string for 'text', number for 'number', boolean for 'boolean'. Pass null to clear the value.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe custom field definition ID (field.id from GET /api/customers/{customer_id}/custom-fields)
valueYesThe new value to assign. Type must match field's data_type: string (text), number (number), boolean (boolean). Pass null to clear.
customer_idYesThe ID of the customer whose custom field value is to be updated.
definition_idYesThe custom field definition ID sent as 'id' in the request body. Typically the same as the path 'id'.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=false, idempotentHint=true, and openWorldHint=true. The description adds valuable behavioral context: value type must match the field's data_type, passing null clears the value, and clarifies the path 'id' is the custom field definition ID. It doesn't mention auth or side effects, but the annotations cover the safety profile.

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?

Two sentences, front-loaded with the HTTP method and endpoint, no fluff. Every sentence contributes essential information about what the tool does and how to invoke it correctly.

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?

With 4 required parameters and no output schema, the description covers the key operational aspects: purpose, ID semantics, value type constraints, and null behavior. It doesn't specify response behavior, but for a simple update tool and given the annotations, this is sufficient. Slight gap is the lack of explicit alternative tool guidance.

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 input schema already describes all 4 parameters with 100% coverage. The description adds meaning by explaining the relationship between the path 'id' and the body 'definition_id', and gives concrete type mapping (string for text, number for number, boolean for boolean) plus null semantics, going beyond the 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 specific action (update) and resource (value of a single custom field for a given customer), and the endpoint is given. It distinguishes from siblings like gorgias_update_customer_fields (plural) by emphasizing 'single' custom field.

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 usage for updating a single custom field value, and contrasts with bulk or plural updates via the word 'single'. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_custom_fieldUpdate Custom FieldA
Idempotent

PUT /api/custom-fields/{id} — Update a single custom field by ID. The three required fields (object_type, label, definition) must always be included even if unchanged. To deactivate a field, set deactivated_datetime to a past ISO 8601 timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the custom field to update
labelYesThe display name of the custom field (required even if unchanged)
priorityNoControls display order. Lower values appear first (0–5000)
requiredNoWhether this field must be filled in by agents
definitionYesThe data type definition and input settings (required even if unchanged)
descriptionNoA human-readable description of the custom field (max 1024 characters)
external_idNoID of the custom field in a foreign system (e.g., Zendesk)
object_typeYesType of entity this custom field applies to (required even if unchanged)
managed_typeNoManaged field type classification. Null for standard custom fields
deactivated_datetimeNoISO 8601 datetime to deactivate the field. Set to null to reactivate

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint: false) and idempotent PUT (idempotentHint: true). The description adds useful behavioral nuances beyond annotations, specifically the mandatory inclusion of required fields even for unchanged values and the deactivation rule via deactivated_datetime, which clarifies PUT semantics.

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 two concise sentences that front-load the HTTP method and resource. Every sentence provides a specific, actionable detail with no filler or redundancy.

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 10 parameters, nested objects, and no output schema, the description provides some critical guidance but omits an explicit statement about full-replace semantics (e.g., what happens to omitted optional fields) or return values. The required-field warning hints at PUT semantics, but it could be more explicit for a complex update tool.

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?

Schema coverage is 100% with detailed descriptions for all 10 parameters, so the baseline is 3. The description adds extra meaning by emphasizing that the three required fields must always be included even if unchanged, and by explaining the deactivation behavior of deactivated_datetime, which goes slightly beyond the schema's per-property descriptions.

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 updates a single custom field by ID using PUT, identifying the specific resource and action. It distinguishes from siblings like bulk_update_custom_fields or create_custom_field by focusing on a single-object update.

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 provides explicit context: the three required fields must always be included even if unchanged, and deactivation is achieved by setting deactivated_datetime to a past timestamp. It does not explicitly mention alternatives, but the single vs. bulk usage is implied by the tool name and sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_integrationUpdate IntegrationA
Idempotent

PUT /api/integrations/{id} — Update an existing integration by its ID. The request body must include name at minimum. Returns the updated Integration object on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the integration to update
httpNoHTTP configuration object. Only relevant for integrations of type 'http'
nameYesName of the integration (required)
descriptionNoHuman-readable description of the integration
business_hours_idNoID of the business hours schedule to associate with this integration (e.g. for phone integrations). Pass null to clear.
deactivated_datetimeNoWhen the integration was deactivated (ISO 8601 format). Set to null to reactivate

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover idempotency (idempotentHint=true) and non-read-only (readOnlyHint=false). The description adds that it returns the updated Integration object, which is useful given no output schema, but it does not disclose behavior like partial vs. full replacement of fields, which is a significant ambiguity for an update tool with many optional fields.

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 two sentences, front-loaded with the HTTP method and endpoint, and contains no fluff. It efficiently conveys the core purpose, the minimum requirement, and the return value.

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 moderately complex schema with nested objects and no output schema, the description provides the essential return type ('returns the updated Integration object') and the core update intent. The field-level details are well-covered by the schema, and annotations fill the safety profile. However, it lacks guidance on how optional fields behave during updates, which would make it more 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 input schema provides 100% coverage with descriptions for all parameters, so the baseline is 3. The description adds no additional parameter meaning beyond restating that 'name' is required and mentioning the HTTP endpoint, which is already reflected in the schema's required list.

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 function: 'Update an existing integration by its ID' with the HTTP method PUT specified. This distinctly differentiates it from sibling tools like create_integration, delete_integration, and get_integration.

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 provides clear context that this is for updating existing integrations and requires at least a name. It implies the need for an existing integration ID, though it doesn't explicitly mention alternatives like create or delete. No when-not-to-use guidance is given beyond the implied existing-entity requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_jobUpdate JobA
Idempotent

PUT /api/jobs/{id} — Update a job by ID. Allows modification of meta, params, scheduled_datetime, and status. Only fields included in the request body are updated.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the job to update
metaNoMetadata associated with the job. Free-form key-value data not used by Gorgias.
paramsNoThe parameters of the job. Sub-fields available depend on the job type.
statusNoThe status of the job. Setting this field allows transitioning the job's state.
scheduled_datetimeNoISO 8601 datetime when the job is scheduled to start (max 60 minutes in the future). Set to null to queue for immediate execution.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already signal that this is a non-read-only, idempotent operation. The description adds meaningful behavioral context by disclosing the partial-update behavior, which prevents agents from assuming omitted fields are reset. This goes beyond the structured annotations without contradicting them.

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 extremely concise—three short sentences front-loaded with the endpoint and action. Every sentence adds meaningful information (endpoint, modifiable fields, patch behavior) with no redundancy or fluff.

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 tool's moderate complexity (nested params, no output schema), the description covers the essential behavioral context: what can be updated and how partial updates work. The schema fully documents the parameters, and the annotations cover idempotency. A small omission is not explaining job-type-specific param variations, but that is documented in the schema itself.

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?

Although the input schema provides 100% parameter descriptions, the description adds value by stating that only fields in the request body are updated, clarifying parameter semantics for partial updates. This helps agents construct payloads without sending all fields. Beyond that, it does not duplicate schema details.

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 ('Update a job by ID') with the HTTP method and path. It lists the specific modifiable fields (meta, params, scheduled_datetime, status), which distinguishes it from sibling tools like create_job, cancel_job, and get_job.

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 provides clear context for using the tool on an existing job and explicitly notes the partial-update semantics ('Only fields included in the request body are updated'), which is important guidance. However, it does not explicitly compare against alternatives such as create_job or cancel_job, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_macroUpdate MacroA
Idempotent

PUT /api/macros/{id} — Partial update of a macro by ID. All body fields are optional; only the fields you supply are modified. NOTE: if you include actions, the entire actions array is replaced — you cannot append individual actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the macro to update
nameNoNew name for the macro.
intentNoThe intended use case of the macro.
actionsNoIf provided, replaces the entire actions list. Each action object should have 'name', 'title', 'arguments', and optionally 'type' and 'description'.
languageNoThe language of the macro in ISO 639-1 format (e.g. 'en', 'fr').
external_idNoExternal ID of the macro in a foreign system. Not used by Gorgias; set to any custom value.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds critical behavioral detail: 'if you include `actions`, the entire actions array is replaced — you cannot append individual actions.' This goes beyond the annotations' idempotency and open-world hints, alerting the agent to a common pitfall. It also clarifies the partial-update semantics.

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 two sentences, front-loaded with the HTTP method and purpose. The caution about `actions` is necessary and positioned prominently. Every sentence earns its place.

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?

For a partial update with 6 params and no output schema, the description covers the key behavior, including the actions replacement. It could mention error handling or prerequisites, but the annotations and schema cover the safety profile sufficiently.

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 input schema already provides descriptions for all 6 parameters (100% coverage). The description adds a general statement that all body fields are optional, which applies across parameters, and restates the actions replacement nuance already present in the schema. This is useful but incremental.

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 'Partial update of a macro by ID' along with the HTTP endpoint, making the verb and resource explicit. It distinguishes this from sibling tools that create, get, or delete macros.

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?

It specifies that all body fields are optional and only supplied fields are modified, providing clear context for when to use this partial update. It does not explicitly mention alternatives or exclusions, which prevents a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_messageUpdate MessageA
Idempotent

PUT /api/tickets/{ticket_id}/messages/{id} — Update an existing ticket message. channel, from_agent, and via are required. Returns 202 Accepted with the full updated TicketMessage object. Use the action query param to handle recovery from failed external actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the message to update
viaYesHow the message was received or sent from Gorgias
metaNoCustom structured metadata
actionNoPolicy for failed external actions: 'force' bypasses and continues, 'retry' retries the failed action, 'cancel' deletes the message
publicNoWhether the message is visible to customers. Set to false for internal notes.
senderNoThe person who sent the message (user or customer). Object with id (integer) and/or email (string). Example: {"id": 93}
sourceNoRouting information for the message. Object with fields: type (string, e.g. 'email'), from ({address, name}), to ([{address, name}]), cc ([{address, name}]), bcc ([{address, name}]). Example: {"type": "email", "from": {"address": "sender@example.com", "name": "Sender Doe"}, "to": [{"address": "receiver@example.com", "name": "Receiver Doe"}]}
channelYesThe channel used to send the message
headersNoMessage headers as key-value pairs (primarily for email)
subjectNoThe subject line of the message
receiverNoThe primary receiver of the message (user or customer). Optional for internal notes. Object with id (integer) and/or email (string). Example: {"id": 8} or {"email": "john@example.com"}
body_htmlNoThe full HTML version of the message body
body_textNoThe full plain-text version of the message body
ticket_idYesThe ID of the ticket associated with the message
from_agentYestrue if the message was sent by your company (agent), false if sent by a customer
message_idNoID of the message on the originating service (email ID, Messenger message ID, etc.)
attachmentsNoList of file attachments. Each item: url (required), content_type (required), name (required), size (integer|null), public (boolean), extra (object).
external_idNoID of the message in a foreign system (Aircall, Zendesk, etc.)
mention_idsNoList of User IDs to mention in an internal note
sent_datetimeNoISO 8601 datetime when the message was sent. If omitted, Gorgias manages the send lifecycle.
integration_idNoID of the integration used to send the message
failed_datetimeNoISO 8601 datetime when the message failed to be sent

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the annotations: it specifies the return status (202 Accepted), the full updated TicketMessage object, and the role of the action param. Annotations already cover read-only/idempotent/open-world hints, and there is no contradiction.

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 three succinct sentences, front-loaded with the operation and resource, and each sentence provides key information without redundancy or fluff.

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?

For a complex 22-parameter mutation tool with no output schema, the description covers the essential context: purpose, required fields, return value, and a notable edge case (action param). The comprehensive schema and annotations fill in the remaining details.

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 input schema has 100% parameter description coverage, so the baseline is 3. The description adds value by highlighting the action param's purpose (recovery from failed external actions) and reiterating the required fields, giving a slight boost beyond the 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 states the exact operation ('Update an existing ticket message') with the HTTP method and resource path. This clearly distinguishes it from sibling tools like gorgias_create_message, gorgias_get_message, and gorgias_delete_message.

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 clearly implies usage for modifying an existing ticket message and adds a specific usage note for the action query param to handle recovery from failed external actions. However, it does not explicitly state when not to use the tool or name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_ruleUpdate RuleA
Idempotent

PUT /api/rules/{id} — Update a rule by ID. All body fields are optional; only the fields you supply will be modified. Common partial updates: toggle deactivated_datetime, bump priority, edit description without resending name+code.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the rule to update
codeNoThe logic of the rule as JavaScript code
nameNoThe name of the rule
code_astNoThe logic of the rule as an ESTree AST representation (auto-generated from code if not specified)
priorityNoOrder of execution; rules with higher priority values are executed first
descriptionNoA human-readable description of the rule
event_typesNoComma-separated list of events that trigger this rule. Allowed values: ticket-created, ticket-updated, ticket-message-created, ticket-assigned, ticket-self-unsnoozed, satisfaction-survey-responded
deactivated_datetimeNoISO 8601 datetime when the rule was deactivated. Set to null to reactivate the rule

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=true), the description discloses the key partial-update behavior—only supplied fields are modified—and illustrates with practical examples. This adds informational value without contradicting the annotations.

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 two concise sentences, front-loaded with the HTTP method and action. Every clause contributes: the action, the partial-update rule, and practical examples, with no superfluous wording.

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?

For a moderately complex tool with 8 parameters and no output schema, the description captures the essential behavioral nuance of partial updates and provides enough context for correct use. It does not mention return values or error handling, but the schema and annotations cover the remaining details.

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 already provides thorough descriptions for all 8 parameters (100% coverage), so the baseline is 3. The description adds slight value by suggesting common parameter manipulations (bump priority, edit description) but does not deeply elaborate on individual parameter semantics beyond 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 'Update a rule by ID' with the HTTP method, making the action unambiguous. It distinguishes from sibling tools by focusing on a single rule with partial updates, rather than bulk operations like update_rules_priorities.

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 provides clear context on when to use the tool, emphasizing partial updates: 'All body fields are optional; only the fields you supply will be modified' and giving common examples like toggling deactivated_datetime or editing description. However, it does not explicitly mention alternatives such as create_rule or update_rules_priorities, so the guidance is contextual rather than explicitly exclusive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_rules_prioritiesUpdate Rules PrioritiesA
Idempotent

POST /api/rules/priorities — Batch update the execution priority of multiple rules in a single request.

ParametersJSON Schema
NameRequiredDescriptionDefault
prioritiesYesArray of rule ID and priority pairs to update

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=false and idempotentHint=true, and the description adds little beyond noting it's a POST batch operation. It lacks details on failure semantics or auth, but the endpoint and 'single request' provide some context. No contradiction with annotations.

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 one sentence, front-loaded with the HTTP method and action, and contains zero filler. It efficiently conveys the purpose without redundancy.

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?

For a simple one-parameter batch operation with a comprehensive schema and no output schema, the description is nearly complete. It could add a note about atomicity or partial failure behavior, but given the minimal complexity, it is adequate.

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 100% with meaningful descriptions for 'id' and 'priority' (including the higher-values-first behavior). The description's mention of 'execution priority' adds no new parameter information beyond what the schema already provides, so it defaults to baseline.

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 action ('Batch update') and target ('execution priority of multiple rules'), distinguishing it from siblings like gorgias_update_rule (single rule) and gorgias_list_rules (listing). It is specific and directly tied to the endpoint's purpose.

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 wording 'in a single request' conveys the batch use case, strongly implying this tool is for updating multiple rule priorities at once. It does not explicitly name alternatives or state when not to use it, but the context is clear enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_satisfaction_surveyUpdate Satisfaction SurveyA
Idempotent

PUT /api/satisfaction-surveys/{id} — Update an existing satisfaction survey by ID. This is a full-replacement PUT: customer_id and ticket_id must be re-sent to preserve the survey's linkage. Read the survey first via gorgias_get_satisfaction_survey to obtain the IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the satisfaction survey to update
metaNoCustom key-value data for the survey. Set to null to clear
scoreNoSatisfaction score, integer 1-5 (1 = worst, 5 = best). The Gorgias API accepts any integer in the inclusive range.
body_textNoThe comment sent by the customer (max 1000 characters). Set to null to clear
ticket_idYesThe ID of the ticket the survey is associated with. Required: PUT is a full-replacement operation.
customer_idYesThe ID of the customer who filled the survey. Required: PUT is a full-replacement operation.
sent_datetimeNoISO 8601 datetime when the survey was sent. Set to null to clear
scored_datetimeNoISO 8601 datetime when the survey was filled by the customer. Set to null to clear
created_datetimeNoISO 8601 datetime the survey was created. Include to preserve the original creation timestamp through a full-replacement PUT.
should_send_datetimeNoISO 8601 datetime when the survey should be sent. Set to null to prevent Gorgias from automatically sending it

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a non-read-only, idempotent operation, but the description adds crucial behavioral detail: the PUT is a full-replacement, so customer_id and ticket_id must be re-sent to preserve linkage. This goes beyond the annotations by revealing the destructive nature of omitting fields.

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?

Two sentences: the first states the endpoint and purpose; the second gives the critical caveat and prerequisite tool reference. No fluff, well front-loaded, and structurally clear.

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?

With a 10-parameter schema fully described and annotations covering idempotency and openness, the description provides the essential full-replacement warning and the read-first step. However, it doesn't mention the response format or error cases, which would be helpful but isn't strictly required given the rich schema.

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 100%, so the schema already documents all parameters thoroughly. The description reinforces the importance of customer_id and ticket_id but doesn't add meaning beyond what the schema states (e.g., 'Required: PUT is a full-replacement operation').

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 ('Update an existing satisfaction survey by ID') and specifies the resource and ID parameter. It distinguishes from siblings by referencing the PUT method and full-replacement semantics, making it unambiguous against create/get/list survey tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to 'Read the survey first via gorgias_get_satisfaction_survey to obtain the IDs,' naming the alternative tool to use beforehand. It also explains the full-replacement requirement, giving clear context for when this update should be performed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_tagUpdate TagA
Idempotent

PUT /api/tags/{id} — Update an existing tag by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the tag to update
nameNoNew name for the tag
decorationNoVisual styling for the tag. Pass null to remove decoration.
descriptionNoNew description

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral context beyond what annotations already provide. Annotations indicate readOnlyHint=false, openWorldHint=true, and idempotentHint=true, but the description does not elaborate on side effects, permissions, or error scenarios.

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, focused sentence that front-loads the HTTP method and core purpose. It contains no filler and is easy to parse.

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?

There is no output schema, and the description does not mention return values or partial update semantics. However, the tool is simple and annotations cover safety and idempotency, making the description minimally adequate.

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 100%, with clear descriptions for each parameter. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'Update' and resource 'tag', and includes the HTTP method PUT, making the purpose unambiguous. It clearly distinguishes from sibling tools like create_tag and delete_tag.

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?

Usage is implied by the description ('Update an existing tag by ID'), but there is no explicit guidance on when to use it versus creating/deleting tags or using other update tools. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_teamUpdate TeamA
Idempotent

PUT /api/teams/{id} — Update an existing team by ID. All fields are optional; only provided fields are updated. The members field performs a full replacement when provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the team to update
nameNoThe display name of the team
membersNoThe full list of users to assign to the team. Replaces the existing member list entirely when provided.
decorationNoVisual display configuration for the team. Pass null to remove decoration.
descriptionNoA longer description of the team's purpose. Pass null to clear.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as a write operation and idempotent. The description adds crucial behavioral details: all fields are optional (patch-like semantics despite PUT) and the members field performs a full replacement when provided. This warns about a potentially destructive action, going beyond the annotation-provided safety profile.

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 only two sentences, opens with the HTTP method and resource, and every clause provides essential information. There is no filler or redundant repetition of schema details.

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?

For a tool with five parameters and no output schema, the description covers the core operation, optionality, and the key behavioral caveat about members replacement. This is sufficient for an agent to understand when and how to invoke the tool without missing critical semantics.

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 schema already has 100% coverage with descriptions for every parameter, so the baseline is 3. The description complements it by clarifying that only provided fields are updated and that members replaces the entire list, adding practical meaning beyond individual field notes.

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 'PUT /api/teams/{id} — Update an existing team by ID.' This identifies the specific verb (update), resource (team), and requires an ID, distinguishing it from sibling create_team and delete_team tools.

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?

It conveys the update context and highlights partial update behavior ('All fields are optional; only provided fields are updated'), implying you should use this when modifying an existing team. However, it does not explicitly name alternatives or scenarios where this should not be used, so it falls short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_ticketUpdate TicketA
Idempotent

PUT /api/tickets/{id} — Update an existing ticket. Only the fields provided will be updated; omitted fields retain their current values. NOTE: Sending 'tags' replaces ALL existing tags. To modify individual tags use the dedicated tag endpoints. Similarly, 'custom_fields' replaces all existing custom field values.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the ticket to update
viaNoHow the first message was received or sent. Enum: 'aircall', 'api', 'chat', 'contact_form', 'email', 'facebook', 'facebook-mention', 'facebook-messenger', 'facebook-recommendations', 'form', 'gorgias_chat', 'help-center', 'helpdesk', 'instagram', 'instagram-ad-comment', 'instagram-comment', 'instagram-direct-message', 'instagram-mention', 'internal-note', 'offline_capture', 'phone', 'rule', 'self_service', 'shopify', 'sms', 'twilio', 'twitter', 'twitter-direct-message', 'whatsapp', 'yotpo', 'yotpo-review', 'zendesk'
metaNoStructured metadata about the ticket (key-value pairs)
spamNoWhether the ticket is considered spam
tagsNoTags to associate with the ticket. WARNING: This REPLACES all existing tags. Use dedicated tag endpoints to add/remove individual tags.
statusNoStatus of the ticket: 'open' or 'closed'
channelNoChannel used to initiate the conversation. Enum: 'aircall', 'api', 'chat', 'contact_form', 'email', 'facebook', 'facebook-mention', 'facebook-messenger', 'facebook-recommendations', 'help-center', 'instagram-ad-comment', 'instagram-comment', 'instagram-direct-message', 'instagram-mention', 'internal-note', 'phone', 'sms', 'twitter', 'twitter-direct-message', 'whatsapp', 'yotpo-review'
subjectNoSubject line of the ticket (max 998 characters)
customerNoCustomer linked to the ticket
languageNoLanguage primarily used in the ticket (e.g. 'en', 'fr')
priorityNoPriority of the ticket: 'critical', 'high', 'normal', or 'low'
from_agentNoWhether the first message was sent by your company (true) or a customer (false)
external_idNoID of the ticket in a foreign system (max 255 chars)
assignee_teamNoTeam assigned to the ticket. Send {id: null} to unassign.
assignee_userNoUser assigned to the ticket. Send {id: null} to unassign.
custom_fieldsNoCustom field values. WARNING: This replaces existing custom field values.
closed_datetimeNoWhen the ticket was closed (ISO 8601). Setting this closes the ticket.
opened_datetimeNoWhen the ticket was first opened (ISO 8601)
snooze_datetimeNoWhen the ticket will auto-reopen (ISO 8601). Set to null to cancel snooze.
trashed_datetimeNoWhen the ticket was trashed (ISO 8601). Set to null to restore from trash.
updated_datetimeNoWhen the ticket was last updated (ISO 8601)
last_message_datetimeNoWhen the last message was sent (ISO 8601)
last_received_message_datetimeNoWhen the last customer message was sent (ISO 8601)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses partial-update semantics and the destructive replacement behavior for tags and custom_fields, which goes beyond the annotation hints (readOnlyHint=false, openWorldHint=true, idempotentHint=true). It does not mention return format or auth, but annotations already signal the mutation 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?

Three sentences, front-loaded with the endpoint and purpose. Each sentence carries distinct value: method, partial-update behavior, and dangerous replacement caveats. No fluff or redundancy.

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 23 params and 100% schema coverage, the description covers the non-obvious partial-update and replace semantics that the agent most needs. It omits return value details, but no output schema exists and annotations provide idempotency/open-world context, so the description is fairly complete.

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?

Schema provides descriptions for all 23 parameters, so the baseline is 3. The description adds the critical general semantic that only provided fields are updated, and reinforces the replace-all warnings for tags/custom_fields, exceeding what the schema alone conveys.

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 'Update an existing ticket' with the specific HTTP method and path, distinguishing it from create/delete operations. It also proactively points to dedicated tag endpoints, which differentiates it from sibling tag-management tools.

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?

It provides explicit guidance that omitted fields retain current values, and warns that tags and custom_fields are wholesale replaced. It names dedicated tag endpoints as alternatives, but does not explicitly mention field-specific update tools like update_ticket_field(s), which are also siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_ticket_fieldUpdate Ticket Custom Field ValueA
Idempotent

PUT /api/tickets/{ticket_id}/custom-fields/{id} — Update the value of a single custom field on a ticket. The path 'id' is the custom field definition ID (field.id from GET /api/tickets/{ticket_id}/custom-fields). Value type must match the field's data_type: string for 'text', number for 'number', boolean for 'boolean'. Pass null to clear the value.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe custom field definition ID (field.id from GET /api/tickets/{ticket_id}/custom-fields)
valueYesThe new value to assign. Type must match field's data_type: string (text), number (number), boolean (boolean). Pass null to clear.
ticket_idYesThe unique ID of the ticket containing the custom field value to update
definition_idYesThe custom field definition ID sent as 'id' in the request body. Typically the same as the path 'id'.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint=false) and idempotent. The description adds the PUT method, explains how to resolve the field ID, requires that the value type match the field's data_type, and mentions that null clears the value. It does not cover error behavior or permissions, but the annotation coverage lowers the bar somewhat.

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 two sentences: the first front-loads the endpoint and purpose, the second packs ID resolution, type requirements, and null-clearing behavior. It is efficient and contains no filler.

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?

For a 4-parameter mutation tool with no output schema, the description covers essential invocation details: endpoint, field ID source, value types, and clearing. The schema fills parameter descriptions. The only clear gap is the ambiguous dual-ID situation (id vs definition_id), which could confuse an agent, but overall the description is sufficient for correct 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 coverage is 100%, with descriptions for all parameters. The description essentially repeats the schema's explanations for 'id' and 'value' and does not add new meaning. It also fails to clarify why both 'id' and 'definition_id' are required and how they relate, which is a notable gap.

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 resource ('the value of a single custom field on a ticket'), and includes the exact endpoint. The phrase 'a single custom field' distinguishes it from the sibling tool gorgias_update_ticket_fields, which implies bulk updates.

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 updating one custom field value on a ticket, and provides field type matching guidelines. However, it does not explicitly say when to use this tool instead of related tools like gorgias_update_ticket_fields or gorgias_update_customer_field_value, and it gives no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_ticket_fieldsUpdate Ticket Custom Field Values (Bulk)A
Idempotent

PUT /api/tickets/{ticket_id}/custom-fields — Update multiple custom field values on a ticket in a single request. Each item in the 'fields' array requires 'id' (the CUSTOM FIELD DEFINITION ID from GET /api/custom-fields) and 'value'. Fields not included are left unchanged. Returns array of updated field value objects (each with value-record 'id' and 'value').

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsYesArray of custom field updates. Each item needs 'id' (definition ID) and 'value'. The request body sent to the API is this array directly.
ticket_idYesThe unique ID of the ticket whose custom field values are being updated

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations by revealing key behaviors: the need for 'CUSTOM FIELD DEFINITION ID' from a specific endpoint, the semantics that fields not included are left unchanged, and the return format of updated field value objects. This adds valuable context beyond the readOnlyHint=false and idempotentHint=true annotations, giving the agent a clear model of side effects.

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 three sentences, front-loaded with the HTTP method and endpoint, and every sentence delivers essential information (purpose, parameter requirements, behavior, return value). No redundant or vague language is present.

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?

For a tool with no output schema, the description explains the return value and behavior sufficiently. It covers the API endpoint, parameter semantics, idempotent-like behavior (fields not included unchanged), and the critical distinction of definition IDs. This is a complete and self-sufficient description for an agent to invoke the tool correctly.

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 already provides 100% coverage with detailed descriptions for both ticket_id and fields, including the definition ID requirement and value type constraints. The description mostly restates this information (e.g., 'id' requires definition ID) and adds only slight behavioral context about unchanged fields, which does not substantively enhance parameter understanding beyond the 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 states a specific action: 'Update multiple custom field values on a ticket in a single request.' It clearly identifies the resource (ticket custom fields) and differentiates from siblings by emphasizing bulk ticket-specific updates and the exact API endpoint. This unambiguously distinguishes it from similar tools like gorgias_bulk_update_custom_fields.

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 provides clear contextual guidance by noting this is for batch updates in a single request and that fields not included are left unchanged, implying a partial update use case. However, it does not explicitly compare itself to alternatives like gorgias_update_ticket or gorgias_bulk_update_custom_fields, which would have made usage boundaries more precise.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_userUpdate UserA
Idempotent

PUT /api/users/{id} — Update an existing user by ID. Only include fields to modify. Use id=0 to update the currently authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the user to update. Use 0 to update the currently authenticated user.
bioNoShort biography of the user. Pass null to clear.
metaNoArbitrary key-value data. Replaces existing meta entirely when provided. Pass null to clear.
nameNoFull name of the user
roleNoThe role to assign to the user
emailNoEmail address of the user. Requires password_confirmation when changing.
activeNoWhether the user can log in.
countryNoCountry of the user as ISO 3166-1 alpha-2 code. Pass null to clear.
languageNoUI locale for the user. 'fr' or 'en' only. Pass null to clear.
lastnameNoLast name of the user.
timezoneNoPreferred timezone as IANA timezone name (e.g. 'US/Pacific', 'Europe/Paris'). Pass null to clear.
firstnameNoFirst name of the user.
external_idNoID of the user in a foreign system. Not used by Gorgias. Pass null to clear.
two_fa_codeNoTwo-factor authentication code, if applicable
new_passwordNoNew password for the user. Requires old_password to also be provided.
old_passwordNoCurrent password of the user. Required when changing the password.
password_confirmationNoCurrent password of the user. Required when changing the email address.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate readOnlyHint=false and idempotentHint=true. The description adds useful behavior (PUT method, partial update, id=0 special case) but does not disclose other potential side effects or prerequisites such as password confirmation requirements, which remain only in the schema.

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 conveys the endpoint, action, and key usage tip without any fluff. Every word adds value.

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 complexity of 17 parameters and no output schema, the description is concise but still provides the essential context for selecting the tool: it updates an existing user, supports partial updates, and has a special id=0 case. The rich schema and annotations cover the remaining invocation details.

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 100%, with each parameter having a detailed description. The tool description itself adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.

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 action ('Update an existing user by ID'), includes the HTTP method and resource, and adds a distinctive special case (id=0 for current user). This distinguishes it from sibling update tools like gorgias_update_customer or gorgias_update_tag.

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 provides a clear usage guideline: 'Only include fields to modify' indicates partial update semantics. It does not explicitly mention alternatives like gorgias_create_user, but the guidance is sufficient for typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_viewUpdate ViewA
Idempotent

PUT /api/views/{id} — Update an existing view by ID. Only include fields to modify.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the view to update
nameNoDisplay name of the view
typeNoType of objects the view applies to. Only 'ticket-list' is supported.
fieldsNoTicket attribute names to display as UI columns
searchNoFree-text search query to filter matching items. Pass null to clear.
filtersNoJavaScript-style filter expression. Supports template variables e.g. eq(ticket.assignee_user.id, '{{current_user.id}}') && eq(ticket.status, 'open')
order_byNoTicket attribute used to sort view items
order_dirNoSort direction for view items
decorationNoDisplay configuration for the view. Pass null to remove decoration.
section_idNoID of the view section to move this view into
visibilityNoAccess level: 'public' (all users), 'shared' (specific users/teams plus admins), 'private' (single user)
shared_with_teamsNoIDs of teams to share the view with. Max 100 items.
shared_with_usersNoIDs of users to share the view with. Max 100 items.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and idempotentHint=true, so the agent knows this is a write operation. The description adds the key behavioral nuance that only provided fields are updated (partial update semantics despite PUT), which is not expressed in the annotations. It does not discuss error conditions or permissions, but the essential mutation behavior is disclosed.

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 that front-loads the endpoint and purpose, followed by a concise usage note. Every phrase earns its place, with no redundant or vague words. It is an excellent example of minimal yet informative description.

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 tool has 13 parameters and no output schema, the description is adequate because the schema thoroughly documents each parameter and annotations provide safety cues. It does not mention response format or error scenarios, but for an update operation with a known endpoint, this is sufficient. The description could be slightly richer, but it is not incomplete enough to warrant a lower score.

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?

All 13 parameters have detailed descriptions in the schema (100% coverage), so the description does not need to restate them. The only parameter-related addition is 'Only include fields to modify,' which is a general note rather than per-parameter meaning. This meets the baseline for comprehensive schema coverage but adds little beyond the 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 explicitly states 'Update an existing view by ID' and includes the HTTP method PUT, clearly indicating this tool modifies an existing view. This distinguishes it from sibling tools like gorgias_create_view, gorgias_get_view, and gorgias_delete_view. The phrase 'Only include fields to modify' further clarifies its partial-update purpose.

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 provides clear context: use this tool when you need to update an existing view, identified by ID. It also advises to include only the fields to modify, which is a practical usage guideline. It does not explicitly mention alternatives or exclusions, so it falls short of a 5, but the context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_update_widgetUpdate WidgetA
Idempotent

PUT /api/widgets/{id} — Update an existing widget by ID. This is a full-replacement operation. Include all fields you want to retain.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the widget to update
typeNoType of data the widget is attached to
orderNoOrder of precedence; widgets with lower order appear first (default: 0)
app_idNoID of the 3rd party app. Used for type 'customer_external_data' widgets
contextNoThe UI context where this widget is displayed. Note: 'user' is deprecated, use 'customer'
templateNoTemplate to render the data of the widget. Replaces the entire template on update
integration_idNoID of the HTTP integration this widget is attached to. Only for type 'http' widgets
deactivated_datetimeNoISO 8601 datetime when the widget was deactivated. Set to null to reactivate

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false (write), idempotentHint=true, and openWorldHint=true. The description adds crucial context about the PUT method and full-replacement semantics, warning that omitted fields may be lost. This goes beyond the basic annotations, though it does not detail auth requirements or error responses.

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 two sentences long, front-loaded with the HTTP method and resource path. Each sentence adds value: the first states what it does, the second explains the critical full-replacement behavior and usage hint. No wasted 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 tool's complexity (8 parameters, nested template object) and lack of output schema, the description provides the essential semantic of full-replacement. However, it does not mention what the response contains or any special considerations for nested fields. Still, with strong annotations and schema, this is adequate.

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 input schema covers all 8 parameters with descriptions, achieving 100% coverage. The description itself does not add any parameter-specific meaning, but the schema already provides sufficient semantics. This aligns with the baseline of 3 for high schema 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?

The description clearly states the operation as 'PUT /api/widgets/{id} — Update an existing widget by ID', which is a specific verb and resource. It distinguishes from sibling tools like create or delete by focusing on updating an existing widget.

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 provides clear context by noting this is a 'full-replacement operation' and instructs to 'Include all fields you want to retain.' This implies it should be used when replacing the entire widget, and cautions against partial updates. However, it does not explicitly name alternative tools for partial updates, though none exist among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gorgias_upload_fileUpload FileA

POST /api/upload — NOT FUNCTIONAL: This tool cannot upload files because the Gorgias upload endpoint requires multipart/form-data, which this MCP server's JSON-only client does not support. Use the Gorgias web interface or a multipart-capable HTTP client (e.g., curl with -F) to upload files directly via the Gorgias API.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the file to reference. The actual binary upload must be done via multipart/form-data outside of this MCP tool
nameYesThe filename/label for the uploaded file (e.g., 'package-damaged.png'). This becomes the file's label on Gorgias's servers

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the tool's non-functionality, the technical reason (multipart/form-data not supported by a JSON-only client), and a workaround. This goes far beyond the readOnlyHint=false and openWorldHint=true annotations, preventing wasted calls and setting accurate expectations.

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?

Two efficient sentences, front-loaded with the essential 'NOT FUNCTIONAL' warning, then providing reason and alternatives. No unnecessary words or redundancy.

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 the tool is non-functional, the description fully covers the limitation, cause, and alternative actions. No output schema or return values are needed because the tool cannot execute successfully.

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 schema already documents both parameters thoroughly (100% coverage). The description adds critical context by stating the tool cannot actually upload, making the parameters effectively inert, and clarifies that the real upload must happen externally via multipart/form-data.

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 identifies the intended operation (upload file via POST /api/upload) and immediately states it is NOT FUNCTIONAL, which is an explicit verb+resource+state. It distinguishes itself from sibling gorgias_download_file by focusing on upload and its critical limitation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells users not to use this tool and provides concrete alternatives: the Gorgias web interface or a multipart-capable HTTP client like curl with -F. This is unambiguous when-to-use/when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 112 tool updatesv2.0.0
    • First observedgorgias_add_ticket_tags
    • First observedgorgias_archive_macros
    • First observedgorgias_bulk_update_custom_fields
    • First observedgorgias_cancel_job
    • First observedgorgias_create_account_setting
    • First observedgorgias_create_custom_field
    • First observedgorgias_create_customer
    • First observedgorgias_create_integration
    • First observedgorgias_create_job
    • First observedgorgias_create_macro
    • First observedgorgias_create_message
    • First observedgorgias_create_rule
    • First observedgorgias_create_satisfaction_survey
    • First observedgorgias_create_tag
    • First observedgorgias_create_team
    • First observedgorgias_create_ticket
    • First observedgorgias_create_user
    • First observedgorgias_create_view
    • First observedgorgias_create_widget
    • First observedgorgias_delete_customer
    • First observedgorgias_delete_customer_field_value
    • First observedgorgias_delete_customers
    • First observedgorgias_delete_integration
    • First observedgorgias_delete_macro
    • First observedgorgias_delete_message
    • First observedgorgias_delete_rule
    • First observedgorgias_delete_tag
    • First observedgorgias_delete_tags
    • First observedgorgias_delete_team
    • First observedgorgias_delete_ticket
    • First observedgorgias_delete_ticket_field
    • First observedgorgias_delete_user
    • First observedgorgias_delete_view
    • First observedgorgias_delete_voice_call_recording
    • First observedgorgias_delete_widget
    • First observedgorgias_download_file
    • First observedgorgias_get_custom_field
    • First observedgorgias_get_customer
    • First observedgorgias_get_event
    • First observedgorgias_get_integration
    • First observedgorgias_get_job
    • First observedgorgias_get_macro
    • First observedgorgias_get_message
    • First observedgorgias_get_rule
    • First observedgorgias_get_satisfaction_survey
    • First observedgorgias_get_tag
    • First observedgorgias_get_team
    • First observedgorgias_get_ticket
    • First observedgorgias_get_user
    • First observedgorgias_get_view
    • First observedgorgias_get_voice_call
    • First observedgorgias_get_voice_call_event
    • First observedgorgias_get_voice_call_recording
    • First observedgorgias_get_widget
    • First observedgorgias_list_account_settings
    • First observedgorgias_list_custom_fields
    • First observedgorgias_list_customer_field_values
    • First observedgorgias_list_customers
    • First observedgorgias_list_events
    • First observedgorgias_list_integrations
    • First observedgorgias_list_jobs
    • First observedgorgias_list_macros
    • First observedgorgias_list_messages
    • First observedgorgias_list_rules
    • First observedgorgias_list_satisfaction_surveys
    • First observedgorgias_list_tags
    • First observedgorgias_list_teams
    • First observedgorgias_list_ticket_fields
    • First observedgorgias_list_ticket_messages
    • First observedgorgias_list_ticket_tags
    • First observedgorgias_list_tickets
    • First observedgorgias_list_users
    • First observedgorgias_list_view_items
    • First observedgorgias_list_views
    • First observedgorgias_list_voice_call_events
    • First observedgorgias_list_voice_call_recordings
    • First observedgorgias_list_voice_calls
    • First observedgorgias_list_widgets
    • First observedgorgias_merge_customers
    • First observedgorgias_merge_tags
    • First observedgorgias_remove_ticket_tags
    • First observedgorgias_retrieve_account
    • First observedgorgias_retrieve_reporting_statistic
    • First observedgorgias_search
    • First observedgorgias_search_view_items
    • First observedgorgias_set_customer_data
    • First observedgorgias_set_ticket_tags
    • First observedgorgias_smart_get_ticket
    • First observedgorgias_smart_search
    • First observedgorgias_smart_stats
    • First observedgorgias_unarchive_macros
    • First observedgorgias_update_account_setting
    • First observedgorgias_update_custom_field
    • First observedgorgias_update_customer
    • First observedgorgias_update_customer_field_value
    • First observedgorgias_update_customer_fields
    • First observedgorgias_update_integration
    • First observedgorgias_update_job
    • First observedgorgias_update_macro
    • First observedgorgias_update_message
    • First observedgorgias_update_rule
    • First observedgorgias_update_rules_priorities
    • First observedgorgias_update_satisfaction_survey
    • First observedgorgias_update_tag
    • First observedgorgias_update_team
    • First observedgorgias_update_ticket
    • First observedgorgias_update_ticket_field
    • First observedgorgias_update_ticket_fields
    • First observedgorgias_update_user
    • First observedgorgias_update_view
    • First observedgorgias_update_widget
    • First observedgorgias_upload_file

TDQS

A3.6/5.0
Disambiguation3/5

Multiple tools serve overlapping purposes: raw vs smart variants for ticket retrieval, search, and reporting. Though descriptions help differentiate them, an agent could easily select the wrong one (e.g., gorgias_get_ticket vs gorgias_smart_get_ticket).

Naming Consistency4/5

Most tools follow the gorgias_verb_noun pattern, but there are deviations like gorgias_smart_search and use of synonyms (retrieve vs get). Overall the naming is consistent and predictable enough.

Tool Count1/5

112 tools is far beyond any reasonable scope for an MCP server; it reflects the entire REST API surface rather than a curated set, with many redundant smart variants and overlapping endpoints.

Completeness4/5

The tool set covers CRUD for customers, tickets, messages, tags, teams, users, views, macros, integrations, and more, plus search and reporting. Minor gaps exist (e.g., no delete satisfaction survey, non-functional upload), but the surface is remarkably complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

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
    An MCP server that provides tools to interact with the Respona Dashboard backend API. It allows users to query ticket data, analytics, and AI flags through natural language interactions.
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    MCP server that exposes the complete Libredesk REST API (54 endpoints) as tools, enabling natural language management of conversations, contacts, agents, teams, and more for the open-source customer support desk.
    54
    13
    3
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    An MCP server that exposes the Tickiti helpdesk API to AI assistants, enabling ticket management and helpdesk operations via natural language.
    11
    MIT

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/benpalmer1/Gorgias-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server