getListMembers
Retrieve members from a specific Twitter list using the list ID, with options to define result limits and include additional user details for enriched insights.
Instructions
Get members of a Twitter list
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| listId | Yes | The ID of the list | |
| maxResults | No | The maximum number of results to return (default: 100, max: 100) | |
| userFields | No | Additional user fields to include in the response |
Implementation Reference
- src/handlers/list.handlers.ts:198-236 (handler)Main handler function that implements the core logic for the getListMembers tool, fetching list members via TwitterClient and formatting the response.export async function handleGetListMembers( client: TwitterClient | null, args: GetListMembersArgs ): Promise<HandlerResponse> { if (!client) { return createMissingTwitterApiKeyResponse('getListMembers'); } try { const options = { max_results: args.maxResults, pageLimit: args.pageLimit, 'user.fields': args.userFields }; const members = await client.getListMembers(args.listId, options); if (!members.data || !Array.isArray(members.data) || members.data.length === 0) { return createResponse(`No members found for list ${args.listId}`); } const memberCount = members.meta?.result_count || members.data.length; let responseText = `Found ${memberCount} members in list ${args.listId}:\n\n`; members.data.forEach((member) => { responseText += `- ${member.name} (@${member.username})\n`; }); if (members.meta?.total_retrieved === args.maxResults) { responseText += '\nNote: Maximum requested results reached. There might be more members available.'; } return createResponse(responseText); } catch (error) { if (error instanceof Error) { throw new Error(formatTwitterError(error, 'getting list members')); } throw new Error('Failed to get list members: Unknown error occurred'); } }
- src/tools.ts:355-378 (schema)Input schema and description for the getListMembers tool, used for MCP tool registration.getListMembers: { description: 'Get members of a Twitter list', inputSchema: { type: 'object', properties: { listId: { type: 'string', description: 'The ID of the list' }, maxResults: { type: 'number', description: 'The maximum number of results to return (default: 100, max: 100)', minimum: 1, maximum: 100 }, userFields: { type: 'array', items: { type: 'string', enum: ['description', 'profile_image_url', 'public_metrics', 'verified', 'location', 'url'] }, description: 'Additional user fields to include in the response' }, }, required: ['listId'], }, },
- src/index.ts:299-306 (registration)Registration and dispatch logic in the main server request handler switch statement for the getListMembers tool.case 'getListMembers': { const { listId, maxResults, userFields } = request.params.arguments as { listId: string; maxResults?: number; userFields?: string[]; }; response = await handleGetListMembers(client, { listId, maxResults, userFields }); break;
- src/handlers/list.handlers.ts:29-34 (schema)TypeScript interface defining input arguments for the getListMembers handler.export interface GetListMembersArgs { listId: string; maxResults?: number; pageLimit?: number; userFields?: string[]; }
- src/types.ts:105-109 (schema)Global type definition for GetListMembersArgs used across the codebase.export interface GetListMembersArgs { listId: string; maxResults?: number; userFields?: string[]; }