get_fec_candidate_profile
Returns FEC-registered candidate profiles (House, Senate, President) and — when include_committees=true (default) — each candidate's associated FEC committees in the same response. Use this when the user asks about: who's running in race X, the campaign finance ID for a member, what PAC is sponsoring a candidate, or to bridge from a Congressional member name to their FEC committee_id before looking up contributions (v1.1 tool). Source: api.open.fec.gov — the official Federal Election Commission public-disclosure API. Records include current sitting members, primary challengers, defeated candidates, future-cycle registrants, and presidential candidates. Cycles tracked: 2022, 2024, 2026. Filter by candidate_id for the fastest direct lookup. Otherwise use candidate_name (case-insensitive substring) optionally narrowed by office + state + cycle. FEC names are typically filed as LASTNAME, FIRSTNAME (e.g., 'MCCORMICK, DAVE' for Dave McCormick). Office codes: H (House), S (Senate), P (President). Party codes: DEM (Democratic), REP (Republican), LIB (Libertarian), GRE (Green), IND (Independent), OTH (Other). Incumbent_challenge: I (Incumbent), C (Challenger), O (Open seat). When active_only=true, only candidates with candidate_status='C' (currently filing) are returned. Committee designations on returned committees: P (Principal campaign committee — the primary donation recipient), A (Authorized — accepts donations on candidate's behalf), B (Lobbyist), D (Leadership PAC), J (Joint fundraiser), U (Unauthorized). The Principal (P) committee is the one you want for 'donations to X's campaign'. Committee types: H (House campaign), S (Senate campaign), P (Presidential campaign), Q (PAC qualified), N (PAC non-qualified), O (Super PAC), I (Independent expenditure non-PAC), X/Y/Z (Party), V/W (Carey/hybrid). For 'follow the money to Senator X', look for designation=P, committee_type=S among the returned committees.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cycle | No | Election cycle year (e.g., 2026). Returns candidates whose cycles[] includes this value. Common cycles: 2022, 2024, 2026. | |
| limit | No | Maximum candidates to return. Default 50, max 500. | |
| party | No | Party code: DEM | REP | LIB | GRE | IND | OTH. | |
| state | No | 2-letter state abbreviation (e.g., 'PA', 'CA'). Empty for President. Combine with office=S to find the senators from a state. | |
| office | No | Office code: H=House, S=Senate, P=President. Narrows ambiguous name matches. | |
| sort_by | No | Sort key. Default: last_file_date (most recent first). | |
| district | No | House district as 2-digit string ('01'-'53') or 'AL' for at-large. Senate/President leave blank. | |
| sort_order | No | Default: desc. | |
| active_only | No | When true, restricts to candidate_inactive=false (currently active filers). Default false (includes withdrawn / defeated / inactive). | |
| candidate_id | No | FEC-assigned candidate ID (immutable across cycles), e.g., 'S6PA00091' for Pat Toomey, 'P80003338' for Mitt Romney's 2008 presidential bid. Direct doc lookup, fastest path. | |
| candidate_name | No | Case-insensitive substring against the FEC-filed candidate name (typically LASTNAME, FIRSTNAME format). Example: 'mccormick' or 'collins'. | |
| include_committees | No | When true (default), each returned candidate is enriched with a `committees` array containing all FEC committees linked via candidate_ids[]. The principal campaign committee (designation='P') is listed first. Set false to skip the committee fetch for faster responses when you only need candidate profile fields. |