users.ts•1.17 kB
import { readMe, readUsers } from '@directus/sdk';
import * as z from 'zod';
import { itemQuerySchema } from '../types/query.js';
import { defineTool } from '../utils/define.js';
import { formatErrorResponse, formatSuccessResponse } from '../utils/response.js';
export const usersMeTool = defineTool('users-me', {
description: 'Retrieve information about the current user',
inputSchema: z.object({
fields: z.array(z.string()),
}),
handler: async (directus, { fields }) => {
const me = await directus.request(readMe({ fields }));
return { content: [{ type: 'text', text: JSON.stringify(me) }] };
},
});
export const readUsersTool = defineTool('read-users', {
description: 'Retrieve information about users.',
inputSchema: z.object({
query: itemQuerySchema.describe(
'Directus query parameters (filter, sort, fields, limit, deep, etc. You can use the read-collections tool to get the schema of the collection first.)',
),
}),
handler: async (directus, { query }) => {
try {
const users = await directus.request(readUsers(query));
return formatSuccessResponse(users);
}
catch (error) {
return formatErrorResponse(error);
}
},
});