Skip to main content
Glama

Directus MCP Server

A Model Context Protocol (MCP) server that provides comprehensive tools for managing Directus schema and content. This server enables AI assistants and other MCP clients to interact with Directus instances programmatically.

Installation

From npm (once published)

npm install -g directus-mcp-server

From source

git clone https://github.com/yourusername/directus-mcp.git
cd directus-mcp
npm install
npm run build

Related MCP server: Strapi Content MCP

Features

  • Schema Management: Create, read, update, and delete collections, fields, and relations

  • Content Management: Full CRUD operations on items with advanced querying

  • Type Safety: Built with TypeScript and Zod validation

  • Official SDK: Uses the official @directus/sdk for reliable API interactions

  • Flexible Authentication: Supports both static tokens and email/password authentication

Installation

npm install

Configuration

Create a .env file in the root directory with your Directus configuration:

# Directus Instance URL
DIRECTUS_URL=https://your-directus-instance.com

# Authentication - Use either token OR email/password
DIRECTUS_TOKEN=your_static_token_here

# Alternative: Email/Password authentication
# DIRECTUS_EMAIL=admin@example.com
# DIRECTUS_PASSWORD=your_password

Authentication Options

  1. Static Token (Recommended for production):

    • Generate a static token in Directus Admin App

    • Set DIRECTUS_TOKEN environment variable

  2. Email/Password:

    • Use for development or when static tokens aren't available

    • Set DIRECTUS_EMAIL and DIRECTUS_PASSWORD environment variables

Toolset Configuration

The Directus MCP server organizes tools into logical toolsets, similar to GitHub's MCP implementation. This allows you to control which tools are exposed to the MCP client.

Available Toolsets:

  • default - Contains collections, fields, relations, and content tools (default behavior when no toolset is specified)

  • collections - Collection management tools (list, get, create, update, delete collections)

  • fields - Field management tools (list, create, update, delete fields)

  • relations - Relation management tools (list, create, delete relations)

  • schema - Schema snapshot and diff tools (get snapshot, get diff, apply diff) - NOT included in default toolset

  • content - Content management tools (items CRUD operations)

  • flow - Flow management tools (workflow automation) - NOT included in default toolset

  • dashboards - Dashboard and panel management tools (list, get, create, update, delete dashboards and panels) - NOT included in default toolset

  • all - All available tools regardless of toolset membership

Default Behavior: When MCP_TOOLSETS is not set or empty, only tools in the default toolset are exposed. The default toolset contains collections, fields, relations, and content tools, but not schema, flow, or dashboard tools. Schema, flow, and dashboard tools must be explicitly requested by including schema, flow, or dashboards in the MCP_TOOLSETS environment variable.

Configuration: Set the MCP_TOOLSETS environment variable to a comma-separated list of toolsets:

# Expose only collections tools
MCP_TOOLSETS=collections

# Expose only schema snapshot/diff tools
MCP_TOOLSETS=schema

# Expose collections and fields tools
MCP_TOOLSETS=collections,fields

# Expose only dashboard and panel tools
MCP_TOOLSETS=dashboards

# Expose all schema-related toolsets
MCP_TOOLSETS=collections,fields,relations,schema

# Expose all toolsets (includes flow and dashboard tools)
MCP_TOOLSETS=default,flow,dashboards
# OR
MCP_TOOLSETS=collections,fields,relations,schema,content,flow,dashboards
# OR simply use 'all' to expose everything
MCP_TOOLSETS=all

Examples:

{
  "mcpServers": {
    "directus-schema": {
      "command": "node",
      "args": ["/path/to/directus-mcp/dist/index.js"],
      "env": {
        "DIRECTUS_URL": "https://your-directus-instance.com",
        "DIRECTUS_TOKEN": "your_token",
        "MCP_TOOLSETS": "schema"
      }
    },
    "directus-content": {
      "command": "node",
      "args": ["/path/to/directus-mcp/dist/index.js"],
      "env": {
        "DIRECTUS_URL": "https://your-directus-instance.com",
        "DIRECTUS_TOKEN": "your_token",
        "MCP_TOOLSETS": "content"
      }
    }
  }
}

Notes:

  • Toolset names are case-insensitive

  • Invalid toolset names are ignored (with a warning)

  • If all requested toolsets are invalid, the server defaults to the default toolset

  • Collections, fields, relations, and content tools belong to both default and their specific toolset

  • Schema, flow, and dashboard tools belong ONLY to their respective toolsets (not in default)

Building

npm run build

Usage

Running the Server

npm start

Or use the built binary:

node dist/index.js

MCP Client Configuration

Add to your MCP client configuration (e.g., Claude Desktop, Cline):

Option 1: Using npx (recommended - no installation needed):

{
  "mcpServers": {
    "directus": {
      "command": "npx",
      "args": ["-y", "directus-mcp-server"],
      "env": {
        "DIRECTUS_URL": "https://your-directus-instance.com",
        "DIRECTUS_TOKEN": "your_static_token_here",
        "MCP_TOOLSETS": "default"
      }
    }
  }
}

Option 2: Using global installation:

{
  "mcpServers": {
    "directus": {
      "command": "directus-mcp",
      "env": {
        "DIRECTUS_URL": "https://your-directus-instance.com",
        "DIRECTUS_TOKEN": "your_static_token_here",
        "MCP_TOOLSETS": "default"
      }
    }
  }
}

Option 3: Using local source:

{
  "mcpServers": {
    "directus": {
      "command": "node",
      "args": ["/absolute/path/to/directus-mcp/dist/index.js"],
      "env": {
        "DIRECTUS_URL": "https://your-directus-instance.com",
        "DIRECTUS_TOKEN": "your_static_token_here",
        "MCP_TOOLSETS": "default"
      }
    }
  }
}

Available Tools

Schema Management Tools

list_collections

List all collections in the Directus instance.

Parameters: None

Example:

{}

get_collection

Get detailed information about a specific collection.

Parameters:

  • collection (string): Collection name

Example:

{
  "collection": "articles"
}

create_collection

Create a new collection (database table) with optional fields. This automatically creates a proper database table, not just a folder.

Parameters:

  • collection (string): Collection name

  • meta (object, optional): Collection metadata (icon, note, singleton, etc.)

  • schema (object, optional): Database schema configuration (automatically set if not provided)

  • fields (array, optional): Initial fields to create

Example:

{
  "collection": "articles",
  "meta": {
    "icon": "article",
    "note": "Blog articles collection"
  },
  "fields": [
    {
      "field": "id",
      "type": "integer",
      "schema": {
        "is_primary_key": true,
        "has_auto_increment": true
      }
    },
    {
      "field": "title",
      "type": "string",
      "meta": {
        "required": true
      }
    },
    {
      "field": "status",
      "type": "string",
      "meta": {
        "interface": "select-dropdown",
        "options": {
          "choices": [
            {"text": "Draft", "value": "draft"},
            {"text": "Published", "value": "published"}
          ]
        }
      }
    }
  ]
}

update_collection

Update collection metadata.

Parameters:

  • collection (string): Collection name

  • meta (object): Metadata to update

Example:

{
  "collection": "articles",
  "meta": {
    "icon": "article",
    "note": "Updated description"
  }
}

delete_collection

Delete a collection and all its data.

Parameters:

  • collection (string): Collection name

Example:

{
  "collection": "articles"
}

list_fields

List all fields in a collection.

Parameters:

  • collection (string): Collection name

Example:

{
  "collection": "articles"
}

create_field

Add a new field to a collection.

Parameters:

  • collection (string): Collection name

  • field (string): Field name

  • type (string): Field type (string, integer, text, boolean, json, uuid, timestamp, etc.)

  • meta (object, optional): Field metadata

  • schema (object, optional): Database schema configuration

Example:

{
  "collection": "articles",
  "field": "author",
  "type": "uuid",
  "meta": {
    "interface": "select-dropdown-m2o",
    "required": true,
    "special": ["m2o"]
  }
}

update_field

Update field properties.

Parameters:

  • collection (string): Collection name

  • field (string): Field name

  • type (string, optional): Field type

  • meta (object, optional): Metadata to update

  • schema (object, optional): Schema to update

Example:

{
  "collection": "articles",
  "field": "title",
  "meta": {
    "note": "Article title (required)"
  }
}

delete_field

Remove a field from a collection.

Parameters:

  • collection (string): Collection name

  • field (string): Field name

Example:

{
  "collection": "articles",
  "field": "old_field"
}

list_relations

List all relations in the Directus instance.

Parameters: None

Example:

{}

create_relation

Create a relation between collections.

Parameters:

  • collection (string): Many collection (with foreign key)

  • field (string): Field name in many collection

  • related_collection (string, optional): One collection

  • meta (object, optional): Relation metadata

  • schema (object, optional): Database relation configuration

Example (Many-to-One):

{
  "collection": "articles",
  "field": "author",
  "related_collection": "users",
  "schema": {
    "on_delete": "SET NULL"
  }
}

Example (One-to-Many):

{
  "collection": "articles",
  "field": "author",
  "related_collection": "users",
  "meta": {
    "one_field": "articles"
  }
}

delete_relation

Delete a relation.

Parameters:

  • collection (string): Collection name

  • field (string): Field name

Example:

{
  "collection": "articles",
  "field": "author"
}

Content Management Tools

query_items

Query items with filtering, sorting, and pagination.

Parameters:

  • collection (string): Collection name

  • fields (array, optional): Fields to return

  • filter (object, optional): Filter criteria

  • search (string, optional): Search query

  • sort (array, optional): Sort fields (prefix with - for descending)

  • limit (number, optional): Maximum items to return

  • offset (number, optional): Items to skip

  • page (number, optional): Page number

  • aggregate (object, optional): Aggregation functions

  • groupBy (array, optional): Group by fields

  • deep (object, optional): Deep relational queries

Filter Operators: _eq, _neq, _lt, _lte, _gt, _gte, _in, _nin, _null, _nnull, _contains, _ncontains, _starts_with, _nstarts_with, _ends_with, _nends_with, _between, _nbetween

Example:

{
  "collection": "articles",
  "filter": {
    "status": {"_eq": "published"},
    "date_created": {"_gte": "2024-01-01"}
  },
  "sort": ["-date_created"],
  "limit": 10
}

get_item

Get a single item by ID.

Parameters:

  • collection (string): Collection name

  • id (string|number): Item ID

  • fields (array, optional): Fields to return

  • deep (object, optional): Deep relational queries

Example:

{
  "collection": "articles",
  "id": 1,
  "fields": ["id", "title", "status", "author.first_name"]
}

create_item

Create a new item.

Parameters:

  • collection (string): Collection name

  • data (object): Item data

Example:

{
  "collection": "articles",
  "data": {
    "title": "My New Article",
    "status": "draft",
    "body": "Article content here...",
    "author": "user-uuid-here"
  }
}

update_item

Update an existing item.

Parameters:

  • collection (string): Collection name

  • id (string|number): Item ID

  • data (object): Fields to update

Example:

{
  "collection": "articles",
  "id": 1,
  "data": {
    "status": "published"
  }
}

delete_item

Delete an item.

Parameters:

  • collection (string): Collection name

  • id (string|number): Item ID

Example:

{
  "collection": "articles",
  "id": 1
}

bulk_create_items

Create multiple items at once.

Parameters:

  • collection (string): Collection name

  • items (array): Array of item data objects

Example:

{
  "collection": "articles",
  "items": [
    {"title": "Article 1", "status": "draft"},
    {"title": "Article 2", "status": "draft"}
  ]
}

bulk_update_items

Update multiple items at once.

Parameters:

  • collection (string): Collection name

  • items (array): Array of items with id and fields to update

Example:

{
  "collection": "articles",
  "items": [
    {"id": 1, "status": "published"},
    {"id": 2, "status": "published"}
  ]
}

bulk_delete_items

Delete multiple items at once.

Parameters:

  • collection (string): Collection name

  • ids (array): Array of item IDs

Example:

{
  "collection": "articles",
  "ids": [1, 2, 3]
}

Common Use Cases

Setting up a new content model

  1. Create a collection with create_collection

  2. Add fields with create_field

  3. Create relations with create_relation

  4. Start adding content with create_item

Querying content with relations

{
  "collection": "articles",
  "fields": ["*", "author.first_name", "author.last_name"],
  "filter": {"status": {"_eq": "published"}},
  "sort": ["-date_created"],
  "limit": 10
}

Bulk operations

Use bulk_create_items, bulk_update_items, or bulk_delete_items for efficient batch operations.

Development

# Watch mode for development
npm run dev

# Build for production
npm run build

Tool Authoring

This project provides utilities to streamline MCP tool development and reduce code duplication:

Tool Helpers

Use createTool for tools that return data, and createActionTool for tools that perform actions:

import { createTool, createActionTool } from './tools/tool-helpers.js';

// Data-returning tool
const myTool = createTool({
  name: 'my_tool',
  description: 'Description of what the tool does',
  inputSchema: MySchema,
  toolsets: ['default', 'my-category'],
  handler: async (client, args) => client.someMethod(args)
});

// Action tool (returns success message)
const myActionTool = createActionTool({
  name: 'delete_something',
  description: 'Delete something',
  inputSchema: DeleteSchema,
  toolsets: ['default'],
  handler: async (client, args) => client.deleteMethod(args.id),
  successMessage: (args) => `Successfully deleted item ${args.id}`
});

Shared Validators

Common Zod schemas are available in src/tools/validators.ts:

  • CollectionNameSchema - For collection names

  • ItemIdSchema - For item IDs (string | number)

  • FieldsSchema - For field arrays

  • FilterSchema - For Directus filter objects

  • Query parameter schemas (SortSchema, LimitSchema, etc.)

  • Flow-related schemas (FlowTriggerSchema, FlowStatusSchema, etc.)

Example usage:

import { CollectionNameSchema, ItemIdSchema } from './tools/validators.js';

const MyToolSchema = z.object({
  collection: CollectionNameSchema,
  id: ItemIdSchema,
  // ... other fields
});

Directus Client Resource Factory

The client uses a resource factory pattern for consistent CRUD operations. When adding new Directus resources, define them in the client constructor using createResourceMethods().

Error Handling

All tools include error handling and will return descriptive error messages for:

  • Authentication failures

  • Invalid parameters

  • API errors

  • Network issues

  • Validation errors

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Available Tools

20 tools
bulk_create_itemsA

Create multiple items in a collection at once. More efficient than creating items one by one. Example: {collection: "articles", items: [{title: "Article 1", status: "draft"}, {title: "Article 2", status: "draft"}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
itemsYesArray of items

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It reveals the mutation nature and gives an example, but lacks details on atomicity, error handling, rate limits, or return values, which are important for a bulk 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 sentence with a clear purpose followed by a well-structured example. Every element contributes value without unnecessary verbosity.

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 absence of an output schema and annotations, the description covers basic usage and parameter format but lacks information on return values, batch size limits, or duplicate handling, leaving significant gaps for an agent to use it safely.

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 both parameters. The description adds an example demonstrating the structure of the 'items' array (objects with title and status), which provides meaningful guidance beyond the schema's 'Array of items'.

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 ('create multiple items in a collection at once') and clearly distinguishes from the sibling tool 'create_item' by noting efficiency and providing a concrete example.

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 (for efficient bulk creation) and contrasts with one-by-one creation, but does not explicitly state when not to use or list alternatives beyond the implicit sibling context.

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

bulk_delete_itemsA

Delete multiple items from a collection at once by their IDs. This action cannot be undone. Example: {collection: "articles", ids: [1, 2, 3]}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
idsYesArray of item IDs

TDQS

A3.9/5.0
Behavior3/5

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

Discloses irreversibility ('cannot be undone') but omits other traits like atomicity, permissions, or error behavior. Without annotations, more detail would be beneficial.

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 plus example, no verbosity. Critical information 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 tool with 2 parameters and no output schema, description covers purpose, irreversibility, and provides a complete example.

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 100% coverage, baseline 3. Description adds example demonstrating parameter format, which provides concrete context beyond schema definitions.

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 'Delete multiple items from a collection at once by their IDs', specifying verb and resource. Distinguished from sibling delete tools like delete_collection and delete_item.

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 vs alternatives like delete_item. Example shows usage but no preconditions or comparisons.

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

bulk_update_itemsA

Update multiple items in a collection at once. Each item must include an id field. Example: {collection: "articles", items: [{id: 1, status: "published"}, {id: 2, status: "published"}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
itemsYesArray of items with id and fields to update

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It discloses the requirement for id fields and shows an example of partial updates, but does not detail idempotency, error handling, or response 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 sentences plus an example, front-loaded with the purpose. Every element is necessary and efficiently presented.

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 description is clear enough for basic usage, it lacks information about return values, error handling, or limits, which are important for a bulk mutation tool without an output schema.

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%, but the description adds value by requiring an id field in each item and providing an example that clarifies the structure beyond the generic 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 tool updates multiple items in a collection, with a specific verb and resource. It effectively distinguishes from sibling tools like bulk_create_items and bulk_delete_items.

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 an example and clarifies that each item must include an id field, but does not explicitly state when to use this tool versus alternatives like update_item. However, the context implies bulk usage.

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

create_collectionA

Create a new collection (database table) in Directus. Automatically creates a proper database table with schema. Can include initial fields. Example: {collection: "articles", meta: {icon: "article", note: "Blog articles"}, fields: [{field: "id", type: "integer", schema: {is_primary_key: true, has_auto_increment: true}}, {field: "title", type: "string"}]}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name (table name)
metaNoCollection metadata
schemaNoDatabase schema configuration
fieldsNoFields to create with the collection

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so the description must carry the full burden. It discloses that it 'automatically creates a proper database table with schema' and 'can include initial fields', which are key behavioral traits. However, it lacks details on permissions required, whether the operation is reversible, or rate limits. The example adds context but does not cover all behavioral aspects.

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 at three sentences plus a structured example. It front-loads the core purpose and uses the example to illustrate complex parameter usage efficiently. Every sentence contributes meaning; 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 complexity (4 parameters, nested objects, no output schema), the description is fairly complete. It explains the automatic schema creation and the ability to include initial fields, and provides a full example. Missing is an explanation of what the tool returns (e.g., the created collection object), which would be helpful given no output schema. Still, it covers the essential usage well.

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?

With 100% schema coverage, all parameters are described in the input schema. The description adds value by providing a detailed example showing how parameters like 'collection', 'meta', 'fields', and nested schema are used together. This clarifies the structure of the 'fields' array and its inner objects, which is not fully captured in the schema 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 explicitly states 'Create a new collection (database table) in Directus' with a specific verb and resource. It distinguishes from siblings like create_field, create_item, etc., by clearly stating it creates a table, not a field or item. The example reinforces the purpose.

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

Usage Guidelines3/5

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

The description implies usage via 'Create a new collection' and shows how to include fields, but it does not explicitly state when to use this tool versus alternatives (e.g., create_field for adding fields to existing collections, or update_collection for modifying). No exclusion criteria or prerequisites are given.

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

create_fieldA

Add a new field to a collection. Specify field type, interface, and constraints. Example: {collection: "articles", field: "status", type: "string", meta: {interface: "select-dropdown", options: {choices: [{text: "Draft", value: "draft"}, {text: "Published", value: "published"}]}, required: true}}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
fieldYesField name
typeYesField type (string, integer, text, boolean, json, uuid, timestamp, etc.)
metaNoField metadata
schemaNoDatabase schema configuration

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It describes a creation action but does not mention side effects (e.g., whether it overwrites existing fields, requires specific permissions, or is irreversible). The example shows a mutation but lacks details on error conditions or constraints.

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: one sentence followed by an example. Every part is informative, with no redundant or vague statements. The example is detailed but necessary for clarity.

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 absence of an output schema and annotations, the description covers the basic usage but lacks details on return values (e.g., the created field object) and potential errors. For a tool with 5 parameters and nested objects, it is adequate but not fully 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?

All 5 parameters are described in the input schema (100% coverage). The description adds value with a concrete example that demonstrates how to use the 'meta' parameter with a nested structure, improving understanding beyond 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 the action 'Add a new field to a collection' and lists the key attributes (type, interface, constraints). The example further clarifies the purpose, making it distinct from sibling tools like create_collection or update_field.

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 creating new fields but does not explicitly state when to use it versus updating an existing field (update_field) or when not to use it (e.g., if the field already exists). No prerequisites or preconditions are mentioned, though the example provides some context.

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

create_itemA

Create a new item in a collection. Provide the item data as key-value pairs. Example: {collection: "articles", data: {title: "My Article", status: "draft", body: "Article content..."}}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
dataYesGeneric key-value object

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states the action of creation and gives an example, but does not mention required permissions, side effects, duplicate handling, or whether changes are immediate. This is insufficient for a mutation tool.

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

Conciseness4/5

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

The description is a single sentence with an example. It is front-loaded with the purpose, and the example is helpful. Slightly longer than necessary, but overall concise.

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

Completeness3/5

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

For a tool with no output schema and only two parameters, the description is adequate but not complete. It lacks information about the return value (e.g., created item ID) and potential error conditions. Given the standard CRUD nature and sibling context, it meets the minimum viability.

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 covers both parameters with descriptions, so baseline is 3. The description adds value by providing an example with specific keys, which clarifies usage beyond the generic schema description. However, it does not explain that the keys depend on the collection's 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 'Create a new item in a collection' uses a specific verb and resource, clearly differentiating from siblings like 'create_collection' and 'bulk_create_items'. The example further clarifies the tool's function.

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

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 versus alternatives like 'bulk_create_items'. While the sibling list implies that for a single item this tool is appropriate, no direct guidance or exclusion criteria are provided.

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

create_relationA

Create a relation between collections (M2O, O2M, or M2M). For M2O: specify collection, field, and related_collection. For O2M: also include meta.one_field. Example M2O: {collection: "articles", field: "author", related_collection: "users"}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesMany collection (the collection with the foreign key)
fieldYesField name in the many collection
related_collectionNoOne collection (the related collection)
metaNoRelation metadata
schemaNoDatabase relation configuration

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It explains behavior for M2O and O2M, but omits M2M details and does not mention side effects, prerequisites, or the nature of the operation (non-destructive? requires permissions?).

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 short and front-loaded, with two sentences and an example. Every part adds value, 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?

Lacks output schema and does not explain return values. Missing details on M2M parameters and optional fields (meta, schema). Adequate but could be more complete for a complex operation.

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. The description adds value by explaining how to structure parameters for different relation types and gives an example, enhancing 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 clearly states it creates a relation between collections, specifies the three types (M2O, O2M, M2M), and provides a concrete example for M2O. This distinguishes it from sibling tools like create_field or create_collection.

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 when creating a relation, but does not explicitly compare to alternatives or state when not to use it. The example helps clarify for M2O, but lacks guidance for M2M.

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

delete_collectionA

Delete a collection and all its data. This action cannot be undone. Use with caution.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name

TDQS

A3.8/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explicitly states the action is irreversible ('cannot be undone') and warns to use with caution. This covers the key destructive behavior, though it omits potential permissions or 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 action and irreversibility. No unnecessary words. 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 deletion tool with one parameter, the description is adequate. It covers purpose and key behavioral trait. Lacks usage guidelines but is otherwise complete given 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?

Input schema has one parameter with description 'Collection name' (100% coverage). Description does not add extra semantic meaning beyond the schema, so 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?

Description clearly states verb 'Delete', resource 'collection', and scope 'all its data'. It distinguishes from sibling delete tools (delete_field, delete_item) by specifying the resource type. The irreversibility warning further clarifies purpose.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For instance, it doesn't mention that to delete individual items one should use delete_item. The caution is present but no explicit when-to-use or when-not-to-use context.

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

delete_fieldA

Remove a field from a collection. This will delete the column and all its data. Use with caution.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
fieldYesField name to delete

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool deletes the column and all its data, which is a key behavioral trait. However, it does not mention reversibility, authentication requirements, or potential side effects on related 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?

The description is concise, using two sentences that immediately convey the tool's purpose and a caution. Every sentence is meaningful 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 simplicity of the tool (two required parameters, no output schema, no annotations), the description is mostly complete. It could be enhanced by mentioning whether the deletion is permanent or if a confirmation response 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 clear descriptions for both parameters (collection name and field name). The description adds no additional semantic information beyond what the schema offers, 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 action: removing a field from a collection and deleting its data. It distinguishes itself from sibling tools like delete_collection or delete_item by specifically targeting a field within a collection.

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 includes 'Use with caution' as a warning but lacks explicit guidance on when to use this tool versus alternatives, such as for temporary removal or soft deletion. No exclusion criteria or context for usage are provided.

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

delete_itemA

Delete an item from a collection by ID. This action cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
idYesItem ID to delete

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose that the action is irreversible, which is critical. However, it omits other potential behaviors like success/failure responses, error handling for non-existent IDs, or required permissions.

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, concise and front-loaded. Every sentence provides essential information; no redundancy or fluff.

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 two-parameter tool with no output schema, the description covers the core purpose and irreversibility. However, it does not specify what happens on success or failure, nor any constraints like collection existence, leaving some gaps.

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 parameter descriptions ('Collection name', 'Item ID to delete'). The tool description adds no further meaning beyond the schema, so it meets the baseline but does not exceed.

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 target resource (item), and the method (by ID). It effectively distinguishes from sibling tools like delete_collection (different resource) and bulk_delete_items (bulk operation).

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 lacks any guidance on when to use this tool versus alternatives such as bulk_delete_items or delete_collection. No prerequisites, exclusions, or context are provided.

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

delete_relationB

Delete a relation. Specify the collection and field that contains the relation.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
fieldYesField name

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description merely restates the action ('Delete') without disclosing behavioral traits such as irreversibility, side effects, 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 short sentences, no redundancy. Every word serves a purpose.

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

Completeness2/5

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

While simple, the description lacks context about consequences, prerequisites, or differentiation from sibling delete tools. It is minimally adequate but leaves gaps.

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 baseline is 3. The description adds marginal context by linking the field to the relation, but does not explain constraints or valid values 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 'Delete a relation' and clarifies how to specify it via collection and field. It is distinct from sibling tools like create_relation and list_relations.

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 only says to specify collection and field but provides no guidance on when to use this tool versus alternatives (e.g., delete_field, delete_collection) or any prerequisites.

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

get_collectionB

Get detailed information about a specific collection including all fields, metadata, and schema configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden of behavioral disclosure. It states the action (get) but does not reveal any behavioral traits such as read-only nature, authentication requirements, potential performance impacts for large collections, or error conditions. The description only describes what it does, not how it 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 a single sentence of 14 words, directly stating the purpose without any extraneous information. It is efficiently front-loaded and every word is necessary.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the description covers the core purpose. However, it lacks hints about the return structure, failure modes, or the need for an existing collection. With many sibling tools, additional context about when to use this vs others would enhance 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 with a description for the single parameter 'collection' (collection name). The tool description adds no additional meaning beyond naming the resource type. With high schema coverage, a baseline of 3 is appropriate, but extra context (e.g., case sensitivity, requirement for existence) would be beneficial.

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 retrieves detailed information about a specific collection, including fields, metadata, and schema configuration. It effectively distinguishes from sibling tools like list_collections (which lists collections without details) but could be more explicit about the scope.

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 detailed information about a particular collection is needed, but it does not provide explicit guidance on when not to use this tool, nor does it mention alternatives among the many sibling tools. A sentence comparing to list_collections or get_item would improve clarity.

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

get_itemA

Get a single item by ID from a collection. Optionally specify fields to return and deep query for relational data.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
idYesItem ID
fieldsNoFields to return
deepNoDeep query for relational data

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It mentions optional field selection and deep querying, but does not disclose that it is read-only or any error conditions.

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 clear sentence with no unnecessary words; efficient and front-loaded.

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 get tool with no output schema, the description covers the main purpose and optional parameters, but lacks explicit mention of return value or error handling.

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 describes parameters adequately. The description adds minimal extra context beyond what the schema provides (e.g., 'fields' and 'deep' are for relational 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 states the tool retrieves a single item by ID from a collection, which distinguishes it from sibling tools like query_items (which list multiple) and create/update/delete.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives; the agent must infer from the name and purpose.

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

list_collectionsB

List all collections in the Directus instance. Returns collection names, metadata, and schema information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the action and output, omitting safety (e.g., read-only), auth requirements, or potential performance implications for large collections.

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 two concise sentences, front-loading the core action. It is efficient and without fluff, though could be marginally more structured (e.g., bullet points for return types).

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 parameterless list tool, but lacks mention of pagination, limits, or whether metadata includes all field details. Without an output schema, the agent may need more specifics on return format.

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 zero parameters, so the description adds no parameter meaning—but none is needed. Baseline for 0 params is 4, and the description does not contradict or mislead.

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 collections') and the resource ('in the Directus instance'). It specifies what is returned, distinguishing it from sibling tools like get_collection (single) and create_collection (creation).

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 such as get_collection or query_items. The description does not mention any prerequisites or exclusions.

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

list_fieldsB

List all fields in a specific collection with their types, metadata, and schema configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the output includes types, metadata, and schema configuration, but does not disclose read-only behavior, pagination, ordering, or any side effects. For a operation that likely reads data, the agent lacks important behavioral cues.

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 direct and free of unnecessary words. It efficiently communicates the tool's purpose without repetition or 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?

Given the lack of output schema and annotations, the description should explain the structure of the returned data more thoroughly. It mentions 'types, metadata, and schema configuration', but this is vague. An agent would benefit from knowing whether the output is a list of field objects, what keys each object has, or any limits.

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 single parameter 'collection' is fully described in the schema as 'Collection name'. The description repeats this by saying 'in a specific collection', but adds no additional semantics or constraints beyond the schema. Since schema coverage is 100%, the description provides marginal value here.

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

Purpose5/5

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

The description clearly states the action ('list'), the resource ('fields'), and the scope ('in a specific collection'). It also mentions the content returned (types, metadata, schema configuration), which distinguishes it from sibling tools like list_collections or list_relations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There are sibling tools like create_field, delete_field, and update_field, but the description does not provide any context about when to list fields instead of using those tools.

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

list_relationsA

List all relations (foreign keys, M2O, O2M, M2M) in the Directus instance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It states 'List all relations', clearly indicating a read-only operation. While it could mention lack of filtering or permissions, for a simple list tool this is transparent enough.

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 covers the purpose efficiently with 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 no parameters and no output schema, the description is complete enough to understand what the tool does. It could optionally describe the return format, but for a simple list operation it is adequate.

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 no parameters, so schema coverage is 100%. The description adds no parameter info, which is acceptable as there are none to document. A baseline of 4 is appropriate since the tool requires no input.

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 all relations, specifying types (foreign keys, M2O, O2M, M2M), which is a specific verb+resource. It distinguishes from sibling tools like create_relation and delete_relation.

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 naming the tool 'list_relations', but does not explicitly state when to use it over alternatives like list_collections or list_fields. No exclusion criteria or alternative suggestions are provided.

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

query_itemsA

Query items from a collection with advanced filtering, sorting, pagination, and search. Supports Directus filter operators like _eq, _neq, _lt, _lte, _gt, _gte, _in, _nin, _null, _nnull, _contains, _ncontains, _starts_with, _nstarts_with, _ends_with, _nends_with, _between, _nbetween. Example: {collection: "articles", filter: {"status": {"_eq": "published"}, "date_created": {"_gte": "2024-01-01"}}, sort: ["-date_created"], limit: 10}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name to query
fieldsNoFields to return
filterNoFilter object using Directus filter syntax
searchNoSearch query string
sortNoSort fields (prefix with - for descending)
limitNoMaximum number of items to return
offsetNoNumber of items to skip
pageNoPage number (alternative to offset)
aggregateNoAggregation functions
groupByNoFields to group by
deepNoDeep query for relational data

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the read-only nature (by verb 'query'), lists supported filter operators, and gives an example, but lacks details on default limits, maximum allowed values, or any side effects. It is adequate but not comprehensive.

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 concise with three clear parts: purpose statement, list of operators, and an example. It is front-loaded and each sentence adds value, though it could be slightly more structured with bullet points for the operators.

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 (11 parameters) and no output schema, the description covers the core functionality with an example and operator list. It does not explain pagination behavior or return format, but the schema handles parameter details, so it is reasonably complete for typical use.

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 adds value beyond the schema by enumerating specific filter operators and providing a concrete example that demonstrates parameter usage (filter, sort, limit). This helps the agent understand how to construct queries.

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 queries items with advanced filtering, sorting, pagination, and search, distinguishing it from sibling mutation tools (e.g., create_item, update_item) and other read tools like get_item. The verb 'query items' and specific capabilities make 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 Guidelines3/5

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

The description implies use cases but does not explicitly state when to use this tool versus siblings like get_item or list_collections. It provides no guidance on exclusions or alternatives, leaving the agent to infer from the context.

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

update_collectionC

Update collection metadata such as icon, note, visibility settings, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name to update
metaNoMetadata to update

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond the fact that it's an update operation. No information on side effects, permissions, atomicity, or error conditions.

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

Conciseness4/5

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

The description is a single concise sentence with no unnecessary words. It front-loads the action and resource.

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 mutation tool with no output schema and missing annotations, the description is incomplete. It doesn't explain return values, confirmation behavior, or any constraints on metadata values. Given the complexity of nested objects, more detail 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%, so baseline is 3. The description adds minimal value by listing example metadata fields but does not specify the structure of the 'meta' nested object, which would be needed for correct invocation.

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 'update collection metadata' and lists examples like icon, note, visibility settings. It distinguishes from sibling tools like create_collection, delete_collection, but remains slightly vague with 'etc.'

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as when to use update_field or create_collection. No mention of prerequisites or when not to use.

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

update_fieldC

Update field properties such as metadata, interface options, or schema constraints.

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
fieldYesField name to update
typeNoField type
metaNoField metadata to update
schemaNoDatabase schema to update

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. Describes a mutation operation but fails to disclose side effects, permissions, or whether changes are reversible. Minimal behavioral disclosure.

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

Conciseness4/5

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

Single sentence of 12 words is concise and contains the essential verb and resource. Could be better structured with bullet points, but no wasted words.

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

Completeness2/5

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

Tool has 5 parameters (2 required) and no output schema. Description is too brief for this complexity; omits return values, error handling, and idempotency information. Incomplete for practical 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%, so baseline is 3. Description adds general context ('metadata, interface options, or schema constraints') but does not enhance parameter-specific meaning beyond the schema descriptions.

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?

Clearly states it updates field properties and lists examples like metadata, interface options, and schema constraints. Distinguishes from create/delete/list siblings but lacks unique differentiation from other update tools.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as create_field or update_collection. Only implied that it modifies existing fields.

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

update_itemA

Update an existing item in a collection. Provide the item ID and fields to update. Example: {collection: "articles", id: 1, data: {status: "published"}}

ParametersJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
idYesItem ID to update
dataYesGeneric key-value object

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not mention required permissions, error handling, idempotency, response format (e.g., returns updated item?), or whether the update merges or replaces. This is a significant gap for a mutation tool.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus an example. It front-loads the purpose and includes a practical example. 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?

Given the three parameters, no output schema, and no annotations, the description could be more complete by specifying the response, error conditions, or how the update behaves (merge vs replace). The sibling tools list is not leveraged.

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 example adds context to the 'data' parameter. However, the description does not explain the structure of the 'data' object beyond what the schema already states ('Generic key-value object'). 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 it updates an existing item in a collection, uses a strong verb ('Update'), and provides an example that distinguishes it from siblings like 'create_item' or 'delete_item'.

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 modifying existing items, but does not explicitly mention when not to use or compare to alternatives like 'bulk_update_items' or 'update_collection'. It is clear enough for basic use.

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

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a distinct purpose: create vs update vs delete for different resources (collections, fields, items, relations), plus bulk variants and querying. No overlap that could confuse an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (e.g., create_collection, list_fields, bulk_create_items). Prefixes like bulk_ are applied uniformly. No mixing of conventions.

Tool Count4/5

20 tools cover the core operations of a headless CMS: CRUD for collections, fields, items, relations, plus bulk and query. Slightly on the high side but still well-scoped for the domain.

Completeness4/5

Covers CRUD for all main entities plus bulk operations and advanced querying. Minor gaps: no explicit list_items (query_items serves that role), no update for relations, and missing some higher-level features like user management, but core data operations are 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

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/Skeyelab/directus-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server