get-action
Retrieve specific Trello action details by ID, including customizable fields, member data, and entity information, for enhanced project management integration.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| actionId | Yes | ID of the action to retrieve | |
| display | No | Include display information | |
| entities | No | Include entity information | |
| fields | No | Comma-separated list of fields to include | |
| member | No | Include member information | |
| memberCreator | No | Include member creator information | |
| memberCreatorFields | No | Comma-separated list of member creator fields | |
| memberFields | No | Comma-separated list of member fields |
Implementation Reference
- src/tools/actions.ts:23-71 (handler)The core handler function for the 'get-action' tool. It performs a GET request to the Trello API endpoint https://api.trello.com/1/actions/{actionId}, appending optional query parameters like display, entities, fields, member, etc., based on input. Handles credentials check, error catching, and returns JSON content or error.async ({ actionId, display, entities, fields, member, memberCreator, memberCreatorFields, memberFields }) => { try { if (!credentials.apiKey || !credentials.apiToken) { return { content: [ { type: 'text', text: 'Trello API credentials are not configured', }, ], isError: true, }; } const url = new URL(`https://api.trello.com/1/actions/${actionId}`); url.searchParams.append('key', credentials.apiKey); url.searchParams.append('token', credentials.apiToken); if (display !== undefined) url.searchParams.append('display', display.toString()); if (entities !== undefined) url.searchParams.append('entities', entities.toString()); if (fields) url.searchParams.append('fields', fields); if (member !== undefined) url.searchParams.append('member', member.toString()); if (memberCreator !== undefined) url.searchParams.append('memberCreator', memberCreator.toString()); if (memberCreatorFields) url.searchParams.append('memberCreator_fields', memberCreatorFields); if (memberFields) url.searchParams.append('member_fields', memberFields); const response = await fetch(url.toString()); const data = await response.json(); return { content: [ { type: 'text', text: JSON.stringify(data), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error getting action: ${error}`, }, ], isError: true, }; } } );
- src/tools/actions.ts:13-22 (schema)Zod schema defining the input parameters for the 'get-action' tool: actionId (required string), and optional parameters: display (boolean), entities (boolean), fields (string), member (boolean), memberCreator (boolean), memberCreatorFields (string), memberFields (string).{ actionId: z.string().describe('ID of the action to retrieve'), display: z.boolean().optional().describe('Include display information'), entities: z.boolean().optional().describe('Include entity information'), fields: z.string().optional().describe('Comma-separated list of fields to include'), member: z.boolean().optional().describe('Include member information'), memberCreator: z.boolean().optional().describe('Include member creator information'), memberCreatorFields: z.string().optional().describe('Comma-separated list of member creator fields'), memberFields: z.string().optional().describe('Comma-separated list of member fields'), },
- src/tools/actions.ts:12-72 (registration)The server.tool('get-action', schema, handler) call within the registerActionsTools function, which defines and registers the tool.'get-action', { actionId: z.string().describe('ID of the action to retrieve'), display: z.boolean().optional().describe('Include display information'), entities: z.boolean().optional().describe('Include entity information'), fields: z.string().optional().describe('Comma-separated list of fields to include'), member: z.boolean().optional().describe('Include member information'), memberCreator: z.boolean().optional().describe('Include member creator information'), memberCreatorFields: z.string().optional().describe('Comma-separated list of member creator fields'), memberFields: z.string().optional().describe('Comma-separated list of member fields'), }, async ({ actionId, display, entities, fields, member, memberCreator, memberCreatorFields, memberFields }) => { try { if (!credentials.apiKey || !credentials.apiToken) { return { content: [ { type: 'text', text: 'Trello API credentials are not configured', }, ], isError: true, }; } const url = new URL(`https://api.trello.com/1/actions/${actionId}`); url.searchParams.append('key', credentials.apiKey); url.searchParams.append('token', credentials.apiToken); if (display !== undefined) url.searchParams.append('display', display.toString()); if (entities !== undefined) url.searchParams.append('entities', entities.toString()); if (fields) url.searchParams.append('fields', fields); if (member !== undefined) url.searchParams.append('member', member.toString()); if (memberCreator !== undefined) url.searchParams.append('memberCreator', memberCreator.toString()); if (memberCreatorFields) url.searchParams.append('memberCreator_fields', memberCreatorFields); if (memberFields) url.searchParams.append('member_fields', memberFields); const response = await fetch(url.toString()); const data = await response.json(); return { content: [ { type: 'text', text: JSON.stringify(data), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error getting action: ${error}`, }, ], isError: true, }; } } );
- src/index.ts:92-92 (registration)Invocation of registerActionsTools(server, credentials) in the main server setup, which registers the 'get-action' tool among other actions tools.registerActionsTools(server, credentials);