106 lines
3.1 KiB
TypeScript
106 lines
3.1 KiB
TypeScript
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
import { KeapClient } from '../clients/keap.js';
|
|
|
|
export function createSettingsTools(client: KeapClient): Tool[] {
|
|
return [
|
|
{
|
|
name: 'keap_get_account_profile',
|
|
description: 'Get the account profile information',
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {},
|
|
},
|
|
},
|
|
{
|
|
name: 'keap_update_account_profile',
|
|
description: 'Update account profile settings',
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {
|
|
name: { type: 'string', description: 'Business name' },
|
|
email: { type: 'string', description: 'Business email' },
|
|
phone: { type: 'string', description: 'Business phone' },
|
|
address: { type: 'string', description: 'Business address' },
|
|
website: { type: 'string', description: 'Business website' },
|
|
time_zone: { type: 'string', description: 'Time zone' },
|
|
currency_code: { type: 'string', description: 'Currency code (e.g., USD)' },
|
|
language_tag: { type: 'string', description: 'Language tag (e.g., en-US)' },
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: 'keap_list_users',
|
|
description: 'List all users in the account',
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {
|
|
include_inactive: { type: 'boolean', description: 'Include inactive users', default: false },
|
|
limit: { type: 'number', description: 'Results per page', default: 50 },
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: 'keap_get_application_configuration',
|
|
description: 'Get application configuration settings',
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {},
|
|
},
|
|
},
|
|
{
|
|
name: 'keap_list_custom_fields',
|
|
description: 'List all custom fields for a given entity type',
|
|
inputSchema: {
|
|
type: 'object',
|
|
properties: {
|
|
entity_type: { type: 'string', description: 'Entity type (Contact, Company, Opportunity, etc.)', required: true },
|
|
},
|
|
required: ['entity_type'],
|
|
},
|
|
},
|
|
];
|
|
}
|
|
|
|
export async function handleSettingsTool(
|
|
toolName: string,
|
|
args: any,
|
|
client: KeapClient
|
|
): Promise<{ content: Array<{ type: string; text: string }> }> {
|
|
let result: any;
|
|
|
|
try {
|
|
switch (toolName) {
|
|
case 'keap_get_account_profile':
|
|
result = await client.get('/account/profile');
|
|
break;
|
|
|
|
case 'keap_update_account_profile':
|
|
result = await client.patch('/account/profile', args);
|
|
break;
|
|
|
|
case 'keap_list_users':
|
|
result = await client.get('/users', args);
|
|
break;
|
|
|
|
case 'keap_get_application_configuration':
|
|
result = await client.get('/setting/application/configuration');
|
|
break;
|
|
|
|
case 'keap_list_custom_fields':
|
|
result = await client.get(`/customFields/${args.entity_type}`);
|
|
break;
|
|
|
|
default:
|
|
throw new Error(`Unknown tool: ${toolName}`);
|
|
}
|
|
|
|
return {
|
|
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
};
|
|
} catch (error: any) {
|
|
return {
|
|
content: [{ type: 'text', text: `Error: ${error.message}` }],
|
|
};
|
|
}
|
|
}
|