Directus MCP Server
Provides comprehensive tools for managing Directus schema and content, including collection management, field and relation configuration, full CRUD operations on items, and management of flows and dashboards.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Directus MCP Serverlist the 5 most recent items from the articles collection"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-serverFrom source
git clone https://github.com/yourusername/directus-mcp.git
cd directus-mcp
npm install
npm run buildRelated 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/sdkfor reliable API interactionsFlexible Authentication: Supports both static tokens and email/password authentication
Installation
npm installConfiguration
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_passwordAuthentication Options
Static Token (Recommended for production):
Generate a static token in Directus Admin App
Set
DIRECTUS_TOKENenvironment variable
Email/Password:
Use for development or when static tokens aren't available
Set
DIRECTUS_EMAILandDIRECTUS_PASSWORDenvironment 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 toolsetcontent- Content management tools (items CRUD operations)flow- Flow management tools (workflow automation) - NOT included in default toolsetdashboards- Dashboard and panel management tools (list, get, create, update, delete dashboards and panels) - NOT included in default toolsetall- 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=allExamples:
{
"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
defaulttoolsetCollections, fields, relations, and content tools belong to both
defaultand their specific toolsetSchema, flow, and dashboard tools belong ONLY to their respective toolsets (not in
default)
Building
npm run buildUsage
Running the Server
npm startOr use the built binary:
node dist/index.jsMCP 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 namemeta(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 namemeta(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 namefield(string): Field nametype(string): Field type (string, integer, text, boolean, json, uuid, timestamp, etc.)meta(object, optional): Field metadataschema(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 namefield(string): Field nametype(string, optional): Field typemeta(object, optional): Metadata to updateschema(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 namefield(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 collectionrelated_collection(string, optional): One collectionmeta(object, optional): Relation metadataschema(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 namefield(string): Field name
Example:
{
"collection": "articles",
"field": "author"
}Content Management Tools
query_items
Query items with filtering, sorting, and pagination.
Parameters:
collection(string): Collection namefields(array, optional): Fields to returnfilter(object, optional): Filter criteriasearch(string, optional): Search querysort(array, optional): Sort fields (prefix with-for descending)limit(number, optional): Maximum items to returnoffset(number, optional): Items to skippage(number, optional): Page numberaggregate(object, optional): Aggregation functionsgroupBy(array, optional): Group by fieldsdeep(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 nameid(string|number): Item IDfields(array, optional): Fields to returndeep(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 namedata(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 nameid(string|number): Item IDdata(object): Fields to update
Example:
{
"collection": "articles",
"id": 1,
"data": {
"status": "published"
}
}delete_item
Delete an item.
Parameters:
collection(string): Collection nameid(string|number): Item ID
Example:
{
"collection": "articles",
"id": 1
}bulk_create_items
Create multiple items at once.
Parameters:
collection(string): Collection nameitems(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 nameitems(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 nameids(array): Array of item IDs
Example:
{
"collection": "articles",
"ids": [1, 2, 3]
}Common Use Cases
Setting up a new content model
Create a collection with
create_collectionAdd fields with
create_fieldCreate relations with
create_relationStart 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 buildTool 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 namesItemIdSchema- For item IDs (string | number)FieldsSchema- For field arraysFilterSchema- For Directus filter objectsQuery 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 toolsbulk_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"}]}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| items | Yes | Array of items |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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]}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| ids | Yes | Array of item IDs |
TDQS
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.
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.
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.
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.
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.
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"}]}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| items | Yes | Array of items with id and fields to update |
TDQS
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.
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.
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.
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.
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.
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"}]}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name (table name) | |
| meta | No | Collection metadata | |
| schema | No | Database schema configuration | |
| fields | No | Fields to create with the collection |
TDQS
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.
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.
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.
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.
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.
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}}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| field | Yes | Field name | |
| type | Yes | Field type (string, integer, text, boolean, json, uuid, timestamp, etc.) | |
| meta | No | Field metadata | |
| schema | No | Database schema configuration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It 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.
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.
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.
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.
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.
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..."}}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| data | Yes | Generic key-value object |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It 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.
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.
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.
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.
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.
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"}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Many collection (the collection with the foreign key) | |
| field | Yes | Field name in the many collection | |
| related_collection | No | One collection (the related collection) | |
| meta | No | Relation metadata | |
| schema | No | Database relation configuration |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| field | Yes | Field name to delete |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| id | Yes | Item ID to delete |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| field | Yes | Field name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| id | Yes | Item ID | |
| fields | No | Fields to return | |
| deep | No | Deep query for relational data |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name to query | |
| fields | No | Fields to return | |
| filter | No | Filter object using Directus filter syntax | |
| search | No | Search query string | |
| sort | No | Sort fields (prefix with - for descending) | |
| limit | No | Maximum number of items to return | |
| offset | No | Number of items to skip | |
| page | No | Page number (alternative to offset) | |
| aggregate | No | Aggregation functions | |
| groupBy | No | Fields to group by | |
| deep | No | Deep query for relational data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name to update | |
| meta | No | Metadata to update |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| field | Yes | Field name to update | |
| type | No | Field type | |
| meta | No | Field metadata to update | |
| schema | No | Database schema to update |
TDQS
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.
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.
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.
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.
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.
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"}}
| Name | Required | Description | Default |
|---|---|---|---|
| collection | Yes | Collection name | |
| id | Yes | Item ID to update | |
| data | Yes | Generic key-value object |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It 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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Run your website's AI support agent from Claude, Cursor or any MCP client. Manage the knowledge base, edit agent instructions, read conversations and leads, reply live to visitors, and check plan usage. 54 tools, OAuth sign-in, no API key. Free with every Asyntai account: https://asyntai.com/documentation/mcp/
Give your AI agents the tools to build, manage, and run automation workflows.
Public tools to understand Dynamik, discover datasets, and connect account-scoped capabilities.
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn extension that implements the Model Context Protocol for Directus, enabling AI tools and LLMs to interact with Directus content through natural language for content editing, data analysis, and asset management.128MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact directly with Strapi v5 CMS content through full CRUD operations, media uploads, and content type exploration using Strapi's Document Service API.2011MIT
- AlicenseBqualityBmaintenanceEnables comprehensive interaction with Directus CMS including collection management, file operations, flow automation, user management, and schema analysis through natural language commands.34195MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage tasks in Directus databases with automatic schema synchronization, supporting CRUD operations, filtering by status and priority, and TypeScript type safety.36MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Skeyelab/directus-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server