Skip to content

feat(schedules): add coordinated expenditures (Schedule F) and committee financial totals #1

@cyanheads

Description

@cyanheads

The server covers Schedules A, B, and E (contributions, disbursements, independent expenditures) plus candidates, committees, filings, elections, legal documents, and calendar. Two gaps in the money-trail picture: coordinated party expenditures (Schedule F) and pre-aggregated committee financial summaries.

Proposal

Two new tools:

  1. openfec_search_coordinated_expenditures — wraps /schedules/schedule_f/ for coordinated expenditures by party committees on behalf of candidates. During presidential cycles these can be significant ($50M+ per party). Same pagination model as existing Schedule A/B/E tools.

  2. openfec_get_committee_totals — wraps /totals/{committee_type}/ for pre-aggregated cycle financial summaries (total receipts, disbursements, cash on hand, debt). Currently this data is only accessible as a side effect of other tools. A dedicated tool makes "how much has this committee raised this cycle?" a single call instead of requiring pagination through Schedule A.

Proposed behavior

// openfec_search_coordinated_expenditures
input: z.object({
  committee_id: z.string().optional().describe('Committee ID (C prefix)'),
  candidate_id: z.string().optional().describe('Candidate ID (H/S/P prefix)'),
  cycle: z.number().int().optional().describe('Election cycle (even year)'),
  min_date: z.string().optional(),
  max_date: z.string().optional(),
  min_amount: z.number().optional(),
  sort: z.string().default('-expenditure_date'),
  per_page: z.number().int().default(20),
})

// openfec_get_committee_totals
input: z.object({
  committee_id: z.string().describe('Committee ID'),
  cycle: z.number().int().optional().describe('Election cycle'),
  committee_type: z.string().optional().describe('e.g. presidential, house, senate, pac, party'),
})

Scope

  • 2 new tool files
  • Reuse existing FEC API client and pagination helpers
  • Update README

Out of scope

  • Communication costs (Form 7) — niche, separate enhancement
  • DataCanvas integration — separate enhancement
  • Electioneering communications — separate enhancement

Alternatives considered

Rolling Schedule F into the existing openfec_search_disbursements was considered, but coordinated expenditures have a distinct data model (candidate beneficiary, expenditure limits) and separate API endpoint. A dedicated tool is clearer.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions