- Calendly API v2 client with auth, pagination, error handling - 27 MCP tools across 6 categories (events, event types, scheduling, users, orgs, webhooks) - 12 React MCP apps with dark theme and client-side state - Both stdio and HTTP modes supported - Full TypeScript types and documentation
88 lines
2.1 KiB
TypeScript
88 lines
2.1 KiB
TypeScript
// Users Tools
|
|
|
|
import { CalendlyClient } from '../clients/calendly.js';
|
|
|
|
export function createUsersTools(client: CalendlyClient) {
|
|
return {
|
|
calendly_get_current_user: {
|
|
description: 'Get the currently authenticated user information',
|
|
parameters: {
|
|
type: 'object',
|
|
properties: {},
|
|
},
|
|
handler: async (args: any) => {
|
|
const result = await client.getCurrentUser();
|
|
return {
|
|
content: [
|
|
{
|
|
type: 'text',
|
|
text: JSON.stringify(result, null, 2),
|
|
},
|
|
],
|
|
};
|
|
},
|
|
},
|
|
|
|
calendly_get_user: {
|
|
description: 'Get user information by URI',
|
|
parameters: {
|
|
type: 'object',
|
|
properties: {
|
|
uri: {
|
|
type: 'string',
|
|
description: 'User URI',
|
|
},
|
|
},
|
|
required: ['uri'],
|
|
},
|
|
handler: async (args: any) => {
|
|
const result = await client.getUserByUri(args.uri);
|
|
return {
|
|
content: [
|
|
{
|
|
type: 'text',
|
|
text: JSON.stringify(result, null, 2),
|
|
},
|
|
],
|
|
};
|
|
},
|
|
},
|
|
|
|
calendly_list_user_busy_times: {
|
|
description: 'List busy time blocks for a user within a date range',
|
|
parameters: {
|
|
type: 'object',
|
|
properties: {
|
|
user_uri: {
|
|
type: 'string',
|
|
description: 'User URI',
|
|
},
|
|
start_time: {
|
|
type: 'string',
|
|
description: 'Start of range (ISO 8601)',
|
|
},
|
|
end_time: {
|
|
type: 'string',
|
|
description: 'End of range (ISO 8601)',
|
|
},
|
|
},
|
|
required: ['user_uri', 'start_time', 'end_time'],
|
|
},
|
|
handler: async (args: any) => {
|
|
const result = await client.getUserBusyTimes(args.user_uri, {
|
|
start_time: args.start_time,
|
|
end_time: args.end_time,
|
|
});
|
|
return {
|
|
content: [
|
|
{
|
|
type: 'text',
|
|
text: JSON.stringify(result, null, 2),
|
|
},
|
|
],
|
|
};
|
|
},
|
|
},
|
|
};
|
|
}
|