get_independent_expenditures
Retrieve independent expenditures by PACs and Super PACs, filtered by candidate, committee, support/oppose indicator, or amount. Track outside money influencing federal elections.
Instructions
Retrieve independent expenditures (Schedule E) - money spent by PACs and Super PACs to support or oppose candidates without coordinating with campaigns. Critical for understanding outside money influence in elections. Can filter by candidate targeted, committee spending, or support/oppose indicator.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| candidate_id | No | FEC candidate ID to find expenditures targeting this candidate | |
| committee_id | No | FEC committee ID to find expenditures made by this committee | |
| support_oppose | No | Filter by support or oppose indicator | |
| min_amount | No | Minimum expenditure amount to include | |
| cycle | No | Two-year election cycle (e.g., 2024) | |
| limit | No | Maximum number of results to return (default: 20) |
Implementation Reference
- Input schema definition using Zod for validation. Defines fields: candidate_id, committee_id, support_oppose, min_amount, cycle, limit. Uses superRefine to require at least one of candidate_id or committee_id.
export const getIndependentExpendituresInputSchema = { candidate_id: z .string() .regex( candidateIdPattern, 'Candidate ID must be in format like H8CA15053 or P00009423' ) .optional() .describe('FEC candidate ID to find expenditures targeting this candidate'), committee_id: z .string() .regex(committeeIdPattern, 'Committee ID must be in format like C00123456') .optional() .describe('FEC committee ID to find expenditures made by this committee'), support_oppose: z .enum(['support', 'oppose']) .optional() .describe('Filter by support or oppose indicator'), min_amount: z .number() .min(0) .optional() .describe('Minimum expenditure amount to include'), cycle: z .number() .int() .min(2000) .max(2030) .optional() .describe('Two-year election cycle (e.g., 2024)'), limit: z .number() .int() .min(1) .max(100) .optional() .describe('Maximum number of results to return (default: 20)'), }; export const getIndependentExpendituresParamsSchema = z .object(getIndependentExpendituresInputSchema) .superRefine((value, ctx) => { if (!value.candidate_id && !value.committee_id) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: 'Please provide either a candidate_id or committee_id to search for independent expenditures.', }); } }); export type GetIndependentExpendituresInput = z.infer< typeof getIndependentExpendituresParamsSchema >;