Skip to main content
Glama
psalzman
by psalzman

get_party_coordinated_expenditures

Retrieve party coordinated expenditures from Federal Election Commission data to analyze campaign finance activities by filtering committee, candidate, date range, and amount parameters.

Instructions

Get party coordinated expenditures

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
committee_idNoOptional: FEC committee ID
candidate_idNoOptional: FEC candidate ID
min_dateNoOptional: Minimum expenditure date (YYYY-MM-DD)
max_dateNoOptional: Maximum expenditure date (YYYY-MM-DD)
min_amountNoOptional: Minimum expenditure amount
max_amountNoOptional: Maximum expenditure amount
sortNoOptional: Sort by expenditure amount

Implementation Reference

  • The main handler function for the 'get_party_coordinated_expenditures' tool. Validates input with Zod schema matching the registered inputSchema, consumes rate limit token, fetches data from OpenFEC API endpoint '/schedules/schedule_f' with provided filters and sorting, paginates to 20 results, and returns the JSON response as text content.
    private async handleGetPartyCoordinatedExpenditures(args: any) { const schema = z.object({ committee_id: z.string().optional(), candidate_id: z.string().optional(), min_date: z.string().optional(), max_date: z.string().optional(), min_amount: z.number().optional(), max_amount: z.number().optional(), sort: z.enum(['asc', 'desc']).optional() }); const params = schema.parse(args); this.rateLimiter.consumeToken(); const response = await this.axiosInstance.get('/schedules/schedule_f', { params: { ...params, sort_hide_null: true, sort: params.sort === 'desc' ? '-expenditure_amount' : 'expenditure_amount', per_page: 20 } }); return { content: [ { type: 'text', text: JSON.stringify(response.data, null, 2), }, ], }; }
  • src/server.ts:313-350 (registration)
    Registration of the tool in the ListTools handler response array, including name, description, and detailed inputSchema for parameters like committee_id, candidate_id, date ranges, amount filters, and sort order.
    { name: 'get_party_coordinated_expenditures', description: 'Get party coordinated expenditures', inputSchema: { type: 'object', properties: { committee_id: { type: 'string', description: 'Optional: FEC committee ID' }, candidate_id: { type: 'string', description: 'Optional: FEC candidate ID' }, min_date: { type: 'string', description: 'Optional: Minimum expenditure date (YYYY-MM-DD)' }, max_date: { type: 'string', description: 'Optional: Maximum expenditure date (YYYY-MM-DD)' }, min_amount: { type: 'number', description: 'Optional: Minimum expenditure amount' }, max_amount: { type: 'number', description: 'Optional: Maximum expenditure amount' }, sort: { type: 'string', enum: ['asc', 'desc'], description: 'Optional: Sort by expenditure amount' } } } },
  • src/server.ts:463-464 (registration)
    Dispatch/registration in the CallToolRequestSchema switch statement that routes calls to the specific handler method.
    case 'get_party_coordinated_expenditures': return await this.handleGetPartyCoordinatedExpenditures(request.params.arguments);
  • Zod schema for input validation inside the handler, mirroring the registered inputSchema.
    const schema = z.object({ committee_id: z.string().optional(), candidate_id: z.string().optional(), min_date: z.string().optional(), max_date: z.string().optional(), min_amount: z.number().optional(), max_amount: z.number().optional(), sort: z.enum(['asc', 'desc']).optional() });

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/psalzman/mcp-openfec'

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