# OpenFEC MCP

> OpenFEC provides direct access to the Federal Election Commission's database. You can search candidates by state or party, pull aggregated financial totals for specific campaigns, and analyze detailed committee filings like individual receipts (`list_schedule_a`) and expenditures (`list_schedule_b`). Get structured campaign finance data without manual database exports.

## Overview
- **Category:** data-analytics
- **Price:** Free
- **Tags:** campaign-finance, election-data, political-transparency, federal-data, financial-reporting, public-records

## Description

**OpenFEC** gives your agent direct access to the Federal Election Commission's database, pulling structured financial records from federal election filings. You don't have to manually export data or deal with messy PDFs; you just ask for what you need and get clean metrics back.

### Candidate Research and Tracking

Need to track who's running? You can start by finding candidates using `list_candidates` or running a targeted search via `search_candidates`, letting you filter results by state or party. To dig deeper into one person, use `get_candidate`. This function pulls the full profile details for any candidate once you have their unique FEC ID. Tracking a candidate's longevity is easy with `get_candidate_history`, which gathers every filing and designation status change they’ve had over time. For quick financial snapshots, run `get_candidate_totals` to pull the summary of total receipts and disbursements for one person.

### Committee Oversight and Financial Aggregation

When you're tracking political groups—the PACs or party committees—you start with `list_committees` to get a list, or use `search_committees` if you know the name or FEC ID. Getting the deep profile is done with `get_committee`. To see how these organizations operate over time, run `get_committee_history`, which tracks operational characteristics and metadata changes across different reporting periods. You can summarize spending by committee type (like PACs versus national party groups) using `get_totals_by_committee_type`, or aggregate total financial figures tied to either a candidate or an entire committee with `get_totals_by_entity`. If you need to know how money is allocated among the people running the group, use `get_totals_officer_summary` to summarize all reported financials by named officers.

### Analyzing Detailed Financial Schedules

The real meat of the data lives in the schedules. You'll find a list of all filings using `list_filings`, and you can also pull financial reports for specific committee types using `list_reports`. For contributions, the most granular view comes from `list_schedule_a`, which itemizes every receipt, detailing money received from both individuals and other committees. When it comes to spending, `list_schedule_b` provides an itemized breakdown of all disbursements—that's where you find operational spending, transfers, or refunds. You can also track loans with `list_schedule_c`, which lists any funds either issued by or received by the committee. To account for money owed, use `list_schedule_d` to detail recorded debts and obligations. The system separates types of spending: `list_schedule_e` details independent expenditures—that's cash spent supporting or opposing candidates without direct coordination. Meanwhile, if the group was working with a campaign directly, you pull coordinated party spending from `list_schedule_f`, which documents that type of cooperation.

### Utility and Search Functions

If you just need contact info for state-level election offices, use `list_state_election_offices`. You can also get an initial list of committees using `list_committees` by filtering on name or category. This toolset lets your agent handle complex research—you can pull specific details about a candidate's profile (`get_candidate`), track their operational history (`get_committee_history`), and understand exactly where every dollar came from or went with specialized schedules like contributions, disbursements, loans, debts, independent spending, and coordinated expenditures.

## Tools

### get_candidate_history
Gets the full record of filings and designation statuses for a specific candidate over time.

### get_candidate
Retrieves detailed profile information for a single candidate using their unique FEC identifier.

### get_candidate_totals
Pulls the summarized financial data, including total receipts and disbursements, for one candidate.

### get_committee_history
Tracks the operational characteristics and metadata changes of a committee across various reporting periods.

### get_committee
Retrieves detailed profile information for a specific political committee using its unique FEC identifier.

### get_totals_by_committee_type
Calculates overall financial totals based on the defined type of political committee (e.g., PAC vs. party group).

### get_totals_by_entity
Aggregates and summarizes financial figures, allowing you to view spending tied to a candidate or specific committee.

### get_totals_officer_summary
Summarizes all reported financial data by the named officers associated with a political committee.

### list_candidates
Fetches an initial list of candidates, allowing you to apply filters like state or party affiliation.

### list_committees
Retrieves a list of political committees, enabling filtering by name or category.

### list_filings
Lists all reported filings (both electronic and physical) for committees using defined filters.

### list_reports
Fetches financial reports submitted by specific types of political committees.

### list_schedule_a
Lists itemized receipts, detailing contributions received from both individuals and other committees.

### list_schedule_b
Lists itemized disbursements, showing operational spending, transfers, or refunds made by a committee.

### list_schedule_c
Provides information regarding loans that were either received or issued by the political committee.

### list_schedule_d
Lists recorded debts and obligations—money owed to or by a committee.

### list_schedule_e
Details independent expenditures, which are funds spent supporting or opposing candidates without coordination.

### list_schedule_f
Documents coordinated party expenditures, showing spending done in direct cooperation with a candidate's campaign.

### list_state_election_offices
Gets the necessary contact information for election offices at the state level.

### search_candidates
Searches for specific candidates using keywords or general attributes like name and party.

### search_committees
Finds committees by searching their registered names or using a known FEC ID.

## Prompt Examples

**Prompt:** 
```
List all presidential candidates for the 2024 election cycle.
```

**Response:** 
```
I've retrieved the list of presidential candidates for 2024. There are currently several registered candidates, including [Candidate Name] (ID: P...) and [Candidate Name] (ID: P...). Would you like to see the financial totals for any of them?
```

**Prompt:** 
```
Show me the financial totals for candidate ID P00000001 in the 2024 cycle.
```

**Response:** 
```
For the 2024 cycle, candidate P00000001 has reported total receipts of $X,XXX,XXX and total disbursements of $Y,XXX,XXX. They currently have $Z,XXX,XXX cash on hand. Do you need a breakdown of individual committee contributions?
```

**Prompt:** 
```
Search for political committees with 'Action' in their name.
```

**Response:** 
```
I found several committees matching 'Action'. Notable ones include 'Climate Action PAC' (ID: C...) and 'Justice Action Fund' (ID: C...). Which one would you like to inspect for detailed filings?
```

## Capabilities

### Search and list candidates
Find individuals running for office using filters like state or party via functions such as `list_candidates` and `search_candidates`.

### Calculate financial totals
Retrieve the aggregated money counts—total receipts, total spending, and cash on hand—for a specific candidate or committee using tools like `get_candidate_totals`.

### Analyze detailed filing schedules
Access granular financial data by pulling structured records for individual contributions (`list_schedule_a`), spending (`list_schedule_b`), and loans (`list_schedule_c`).

### Track committee activity over time
View the operational history of political groups (PACs) using `get_committee_history` or analyze reporting from specific types of committees with `list_reports`.

## Use Cases

### Tracking a specific campaign's money flow.
A financial analyst needs to know the exact operating expenditures of a PAC. They ask their agent, and the agent calls `list_schedule_b` for that committee ID. This provides an itemized list of spending (disbursements), letting the analyst see exactly which programs or groups received funds.

### Comparing election cycles.
A journalist wants to know if a candidate's financial footprint has grown since their last run. They use `get_candidate_history` and then compare the resulting data points against the current totals pulled by `get_candidate_totals`. This gives them a clear, longitudinal view of growth or decline.

### Identifying campaign funding sources.
A researcher suspects a candidate is relying heavily on specific types of donations. They run `list_schedule_a` and filter the results by individual contribution type, then use `get_totals_by_entity` to aggregate that data for a quick overview.

### Reviewing coordinated political spending.
A developer needs to build an app tracking specific campaign actions. They query the system using `list_schedule_f`, which focuses specifically on expenditures made in coordination with candidates, ensuring they capture a niche but critical data stream.

## Benefits

- Stop exporting CSVs. You get direct, structured access to financial totals by calling `get_candidate_totals` or `get_committee_totals`, keeping your workflow entirely within the agent interface.
- Don't piece together records manually. Using tools like `list_schedule_a` (receipts) and `list_schedule_b` (spending) allows you to instantly compare exactly where money came from versus where it went.
- Avoid siloed data views. The server lets you cross-reference a committee's general details (`get_committee`) with its historical activity (`get_committee_history`), giving a full lifecycle view of the group.
- Go beyond surface searches. With `list_candidates` and filters, you quickly narrow down thousands of potential records to only those matching your required state or party for an election cycle.
- Process complex reports without boilerplate code. You don't write SQL; you just ask your agent to combine data points from multiple tools—for example, getting candidate info (`get_candidate`) and their total spending (`get_candidate_totals`) in one go.

## How It Works

The bottom line is that your AI client handles the connection, key management, and API calling, so you just ask a natural language question about election finance.

1. Subscribe to this server and input your OpenFEC API Key into the Vinkius Marketplace.
2. Ask your AI client to run a query, for example: 'What were the total receipts for candidate X in 2024?'
3. The agent calls the appropriate tool (like `get_candidate_totals`) and returns structured financial data directly to you.

## Frequently Asked Questions

**How do I find a list of all candidates using OpenFEC MCP Server?**
You use `list_candidates` or `search_candidates`. These functions let you filter the entire pool of candidates by criteria like state, party, or election cycle to narrow down your search.

**Can I compare spending across different PACs using OpenFEC MCP Server?**
Yes. You can use `get_totals_by_committee_type` to get aggregated totals for a whole group of committees, or run multiple calls with `list_committees` and then pull individual summaries using `get_candidate_totals`.

**What is the difference between list_schedule_a and list_schedule_b?**
Schedule A tracks money coming in (receipts/contributions). Schedule B tracks money going out (disbursements/spending). You need both to understand a committee's financial health.

**How do I check historical data for a candidate? Use OpenFEC MCP Server.**
You must use the `get_candidate_history` tool. This function specifically retrieves records of filings and designations over multiple election cycles, giving you context beyond just current totals.

**If I need general metadata for a committee, how do I use the `get_committee` tool?**
The `get_committee` tool pulls detailed profile information beyond just finances. It provides core data like the committee's official name, status, and unique identifiers. This is useful when you don't know the specific financial metrics you need.

**How do I calculate aggregated financial totals for multiple candidates or committees at once using `get_totals_by_entity`?**
This tool aggregates financial data across defined entities. You pass a list of candidate or committee IDs, and it returns the combined total receipts, disbursements, and cash on hand for all selected groups in one call.

**What specific debt information can I get using the `list_schedule_d` tool?**
The `list_schedule_d` tool handles records of debts and obligations. You pull data detailing money owed by or to a committee, which helps you track liabilities separate from operational spending.

**When using the `list_filings` tool, what type of filters should I use?**
You filter filings by date range, filing type (electronic vs. paper), and specific committee IDs. This allows you to narrow down massive datasets quickly so your agent only processes relevant reports.

**Can I find out how much a specific candidate has raised in total for an election cycle?**
Yes! Use the `get_candidate_totals` tool with the candidate's ID and the desired cycle. It will return aggregated financial summaries including total receipts and disbursements.

**How do I search for all candidates running for the Senate in a specific state?**
You can use the `list_candidates` tool and provide 'S' for the office and the two-letter state abbreviation (e.g., 'CA' for California) to filter the results.

**Is it possible to see the history of a candidate's previous filings?**
Absolutely. The `get_candidate_history` tool allows you to retrieve historical data for a candidate, showing their filings and designations over time.