get_receipts
Retrieve itemized contributions received by a campaign committee. Filter by amount, contributor type, and sort by amount or date to analyze donation patterns.
Instructions
Retrieve itemized contributions (Schedule A) received by a campaign committee. Shows individual and organizational donors, amounts, and contributor details. Automatically classifies PAC contributions by type (Corporate, Labor, Trade, Leadership PAC) for deeper analysis. Supports filtering by amount threshold for researching significant contributions and campaign finance patterns.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| committee_id | Yes | FEC committee ID (e.g., "C00401224") | |
| min_amount | No | Minimum contribution amount to filter (default: $1,000) | |
| two_year_transaction_period | No | Two-year period (e.g., 2024 covers 2023-2024). | |
| cycle | No | Alias for two_year_transaction_period to align with finance cycle filters. | |
| contributor_type | No | Filter by contributor type: "individual" or "committee" (PAC) | |
| include_notable | No | Include flagged-first notable analysis block in output (default: true) | |
| fuzzy_threshold | No | Fuzzy match confidence threshold for reference list matching (default: 90) | |
| limit | No | Number of results to return (default: 20, max: 100) | |
| sort_by | No | Sort results by "amount" (descending) or "date" (most recent first) | amount |
Implementation Reference
- src/schemas/receipts.schema.ts:9-76 (schema)Input schema definition for get_receipts using Zod, defining all parameters: committee_id, min_amount, two_year_transaction_period, cycle, contributor_type, include_notable, fuzzy_threshold, limit, and sort_by.
export const getReceiptsInputSchema = { committee_id: z .string() .regex(committeeIdPattern, 'Committee ID must be in format C00000000') .describe('FEC committee ID (e.g., "C00401224")'), min_amount: z .number() .positive('Minimum amount must be positive') .optional() .default(1000) .describe('Minimum contribution amount to filter (default: $1,000)'), two_year_transaction_period: z .number() .int() .min(1980) .max(2030) .optional() .describe('Two-year period (e.g., 2024 covers 2023-2024).'), cycle: z .number() .int() .min(1980) .max(2030) .optional() .describe('Alias for two_year_transaction_period to align with finance cycle filters.'), contributor_type: z .enum(['individual', 'committee']) .optional() .describe('Filter by contributor type: "individual" or "committee" (PAC)'), include_notable: z .boolean() .optional() .default(true) .describe('Include flagged-first notable analysis block in output (default: true)'), fuzzy_threshold: z .number() .int() .min(80) .max(99) .optional() .default(90) .describe('Fuzzy match confidence threshold for reference list matching (default: 90)'), limit: z .number() .int() .min(1, 'Limit must be at least 1') .max(100, 'Limit cannot exceed 100') .optional() .default(20) .describe('Number of results to return (default: 20, max: 100)'), sort_by: z .enum(['amount', 'date']) .optional() .default('amount') .describe('Sort results by "amount" (descending) or "date" (most recent first)'), }; export const getReceiptsParamsSchema = z.object(getReceiptsInputSchema); export type GetReceiptsInput = z.infer<typeof getReceiptsParamsSchema>;