Skip to main content
Glama
activity-search.ts5.01 kB
/** * Activity and interaction search tool configurations for people */ import { AttioRecord } from '../../../types/attio.js'; import { searchPeopleByLastInteraction, searchPeopleByActivity, } from '../../../objects/people/index.js'; import { DateBasedSearchToolConfig } from '../../tool-types.js'; import { getPersonName } from './formatters.js'; export const activitySearchToolConfigs = { searchByLastInteraction: { name: 'search-people-by-last-interaction', handler: searchPeopleByLastInteraction, formatResult: (results: AttioRecord[]) => `Found ${ results.length } people with interactions in the specified date range:\n${results .map( (person) => `- ${getPersonName(person)} (ID: ${ person.id?.record_id || 'unknown' }, Last Interaction: ${ ( (person.values as Record<string, unknown>) ?.last_interaction as Record<string, unknown> )?.interacted_at || 'unknown' })` ) .join('\n')}`, } as DateBasedSearchToolConfig, searchByActivity: { name: 'search-people-by-activity', handler: searchPeopleByActivity, formatResult: (results: AttioRecord[]) => `Found ${results.length} people with matching activity:\n${results .map( (person) => `- ${getPersonName(person)} (ID: ${ person.id?.record_id || 'unknown' }, Last Interaction: ${ ( (person.values as Record<string, unknown>) ?.last_interaction as Record<string, unknown> )?.interacted_at || 'unknown' })` ) .join('\n')}`, } as DateBasedSearchToolConfig, }; export const activitySearchToolDefinitions = [ { name: 'search-people-by-last-interaction', description: 'Search for people by their last interaction date', inputSchema: { type: 'object', properties: { dateRange: { type: 'object', description: 'Date range for filtering', properties: { start: { type: 'string', description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')", }, end: { type: 'string', description: "End date in ISO format or relative date expression (e.g., '2023-12-31')", }, preset: { type: 'string', description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')", }, }, }, interactionType: { type: 'string', description: 'Type of interaction to filter by (any, email, calendar, phone, meeting, custom)', enum: ['any', 'email', 'calendar', 'phone', 'meeting', 'custom'], }, limit: { type: 'number', description: 'Maximum number of results to return (default: 20)', }, offset: { type: 'number', description: 'Number of results to skip (default: 0)', }, }, required: ['dateRange'], }, }, { name: 'search-people-by-activity', description: 'Search for people by their activity history', inputSchema: { type: 'object', properties: { activityFilter: { type: 'object', description: 'Activity filter configuration', properties: { dateRange: { type: 'object', description: 'Date range for filtering', properties: { start: { type: 'string', description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')", }, end: { type: 'string', description: "End date in ISO format or relative date expression (e.g., '2023-12-31')", }, preset: { type: 'string', description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')", }, }, required: ['start', 'end'], }, interactionType: { type: 'string', description: 'Type of interaction to filter by (any, email, calendar, phone, meeting, custom)', enum: ['any', 'email', 'calendar', 'phone', 'meeting', 'custom'], }, }, required: ['dateRange'], }, limit: { type: 'number', description: 'Maximum number of results to return (default: 20)', }, offset: { type: 'number', description: 'Number of results to skip (default: 0)', }, }, required: ['activityFilter'], }, }, ];

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/kesslerio/attio-mcp-server'

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