get_committee_finances
Retrieve comprehensive financial summary for a campaign committee from FEC filings, including receipts, disbursements, cash on hand, debts, loans, and burn rate for transparency research.
Instructions
Retrieve comprehensive financial summary for a campaign committee from official FEC filings. Returns total receipts, disbursements, cash on hand, debts, loans (including candidate loans), and calculates burn rate (spending/income ratio). Includes Schedule C loans and Schedule D debts for complete financial picture. Essential for understanding campaign financial health and transparency research.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| committee_id | Yes | FEC committee ID (e.g., "C00401224") | |
| cycle | No | Two-year election cycle (e.g., 2024). Defaults to most recent. |
Implementation Reference
- src/schemas/finances.schema.ts:1-31 (schema)Zod schema definitions for get_committee_finances input validation: committee_id (C followed by 8 digits) and optional cycle (1980-2030).
/** * Zod Schema for get_committee_finances tool */ import { z } from 'zod'; // Committee ID format: C followed by 8 digits const committeeIdPattern = /^C\d{8}$/; export const getCommitteeFinancesInputSchema = { committee_id: z .string() .regex(committeeIdPattern, 'Committee ID must be in format C00000000 (C followed by 8 digits)') .describe('FEC committee ID (e.g., "C00401224")'), cycle: z .number() .int() .min(1980, 'Cycle must be 1980 or later') .max(2030, 'Cycle must be 2030 or earlier') .optional() .describe('Two-year election cycle (e.g., 2024). Defaults to most recent.'), }; export const getCommitteeFinancesParamsSchema = z.object( getCommitteeFinancesInputSchema ); export type GetCommitteeFinancesInput = z.infer< typeof getCommitteeFinancesParamsSchema >; - Acceptance test script calling executeGetCommitteeFinances with committee_id and cycle to verify the tool works end-to-end.
const financeStart = performance.now(); const finances = await executeGetCommitteeFinances(client, { committee_id: committeeId, cycle: target.cycle, }); console.log(`[get_committee_finances] ${finances.isError ? 'ERROR' : 'ok'} (${elapsedMs(financeStart)}ms)`);