Overview
The Congressional Record MCP gives AI assistants direct access to structured U.S. Congressional Record data — dates, topics, statements, and full-text search — through four tools with consistent parameters and typed responses.
Authentication
The MCP server uses Clerk OAuth for user authentication. An account is required. Once signed in, you can generate an API key from your Account page for manual clients, or use OAuth directly for connector-based clients (like Claude).
Manual clients (API key)
For MCP clients that support direct Bearer token auth, generate an API key from your Account and pass it as:
Authorization: Bearer YOUR_API_KEY
Connectors (OAuth)
For tools like Claude that use OAuth-based connectors, you will be prompted to sign in and authorize access. No API key copy/paste is required.
Claude Connector Setup
This is the fastest way to use the Congressional Record MCP with Claude. You add a custom connector once, sign in, and then toggle it on in any chat.
Step 1 — Open Connector Settings
In a new Claude chat, click +, then go to
Connectors → Manage connectors.
Step 2 — Add A Custom Connector
Click Add custom connector at the bottom.
Enter a name (e.g. Second Congress MCP) and set the URL to
https://mcp.secondcongress.com.
You do not need to enter anything in Advanced settings. Click Add.
Step 3 — Confirm It Appears In Your Custom Connectors
You should now see Second Congress MCP in your list of custom connectors.
Step 4 (Optional) — Configure Tool Permissions
Click Configure next to the connector to adjust tool permissions.
Step 5 — Toggle It On In Chats
In any chat, click + → Connectors, and confirm the connector is toggled on.
If Claude prompts you to sign in and authorize access, complete the OAuth flow and then return to the chat.
Quickstart
| Step | Action |
|---|---|
| 1 | Sign in and generate an API key from your Account page (manual clients only). |
| 2 | Point your MCP client at https://mcp.secondcongress.com (or https://mcp.secondcongress.com/mcp) and authenticate (OAuth for connectors, API key for manual clients). |
| 3 | Start calling tools: list_dates, list_topics, get_statements, search_statements. |
Tools
| Tool | Purpose | Endpoint |
|---|---|---|
list_dates | Discover dates with available congressional data | /api/v1/dates |
list_topics | List topics discussed on a given date or time range | /api/v1/topics |
get_statements | Retrieve statements for a specific topic | /api/v1/statements |
search_statements | Keyword or semantic search across all statements | /api/v1/search |
Shared Filters
These filter names are the same across every tool. All are optional unless noted otherwise in a specific tool's constraints.
| Filter | Type | Description |
|---|---|---|
chamber | string | "House", "Senate", or "Extensions of Remarks" |
state | string | Two-letter state code, e.g. "CA", "TX" |
member_id | string | Unique member identifier |
year | integer | Calendar year, e.g. 2025 |
congress_number | integer | Congress session number, e.g. 119 |
Validation Rules
Certain tools require at least one scope parameter to keep queries fast and results meaningful:
| Tool | Requirement |
|---|---|
list_topics |
At least one of date, year, or congress_number is required. |
get_statements |
At least one of topic_id or topic_title is required. |
get_statements |
If using topic_title without date, you must also provide year or congress_number. |
search_statements |
query is always required. |
Invalid calls return a structured error with a detail field explaining what's missing.
Examples
list_dates — Find available dates
{
"name": "list_dates",
"arguments": {}
}
[
{ "date": "2025-03-15" },
{ "date": "2025-03-14" },
{ "date": "2025-03-13" },
{ "date": "2025-03-12" }
]
{
"name": "list_dates",
"arguments": {
"chamber": "Senate",
"year": 2025
}
}
list_topics — Browse topics on a date
{
"name": "list_topics",
"arguments": {
"date": "2025-03-15"
}
}
[
{
"topic_id": "a1b2c3d4-5678-9abc-def0-123456789abc",
"topic_title": "PROVIDING FOR CONSIDERATION OF H.R. 1234",
"date": "2025-03-15",
"chamber": "House",
"statement_count": 8
},
{
"topic_id": "b2c3d4e5-6789-abcd-ef01-23456789abcd",
"topic_title": "NATIONAL DEFENSE AUTHORIZATION ACT",
"date": "2025-03-15",
"chamber": "Senate",
"statement_count": 14
}
]
{
"name": "list_topics",
"arguments": {
"year": 2025,
"chamber": "House"
}
}
get_statements — Retrieve statements for a topic
{
"name": "get_statements",
"arguments": {
"topic_id": "a1b2c3d4-5678-9abc-def0-123456789abc",
"limit": 20
}
}
{
"items": [
{
"id": "f1e2d3c4-9876-5432-abcd-fedcba987654",
"name": "Rep. Maria Torres",
"chamber": "House",
"date": "2025-03-15",
"title": "PROVIDING FOR CONSIDERATION OF H.R. 1234",
"topic_group_id": "a1b2c3d4-5678-9abc-def0-123456789abc",
"text": "Mr. Speaker, I rise today to speak on the importance of...",
"word_count": 342,
"audio_url": null,
"video_clip_url": null
},
{
"id": "e2d3c4b5-8765-4321-bcde-edcba9876543",
"name": "Rep. James Chen",
"chamber": "House",
"date": "2025-03-15",
"title": "PROVIDING FOR CONSIDERATION OF H.R. 1234",
"topic_group_id": "a1b2c3d4-5678-9abc-def0-123456789abc",
"text": "I thank the gentlelady for yielding. This legislation...",
"word_count": 518,
"audio_url": null,
"video_clip_url": null
}
],
"total_count": 8,
"next_offset": 20
}
{
"name": "get_statements",
"arguments": {
"topic_title": "PROVIDING FOR CONSIDERATION OF H.R. 1234",
"date": "2025-03-15",
"include_media": true
}
}
{
"name": "get_statements",
"arguments": {
"topic_title": "NATIONAL DEFENSE AUTHORIZATION ACT",
"year": 2025,
"chamber": "Senate",
"limit": 50
}
}
search_statements — Keyword search
{
"name": "search_statements",
"arguments": {
"query": "tariff",
"mode": "keyword",
"chamber": "House",
"page_size": 20
}
}
{
"results": [
{
"id": "c4d5e6f7-1234-5678-abcd-123456789abc",
"name": "Rep. Kevin Walsh",
"chamber": "House",
"date": "2025-02-20",
"title": "TRADE AND TARIFF REFORM ACT",
"text": "The impact of these tariffs on American manufacturing...",
"word_count": 612,
"political_party": "Republican",
"state": "Ohio"
}
],
"total_count": 84,
"page": 1,
"page_size": 20,
"total_pages": 5
}
search_statements — Semantic search
{
"name": "search_statements",
"arguments": {
"query": "arguments for and against federal student loan forgiveness",
"mode": "semantic",
"chamber": "Senate",
"page_size": 10
}
}
{
"results": [
{
"id": "d5e6f7a8-2345-6789-bcde-23456789abcd",
"name": "Sen. Patricia Moore",
"chamber": "Senate",
"date": "2025-03-10",
"title": "HIGHER EDUCATION AFFORDABILITY ACT",
"text": "The question before us is whether the federal government...",
"word_count": 891,
"political_party": "Democrat",
"state": "Virginia",
"similarity": 0.87,
"matched_chunk": "The burden of student loan debt affects over 43 million Americans. Proponents argue that forgiveness stimulates economic growth..."
}
],
"total_count": 42,
"page": 1,
"page_size": 10,
"total_pages": 5
}
search_statements — Filtered by state and date range
{
"name": "search_statements",
"arguments": {
"query": "immigration reform",
"mode": "keyword",
"state": "TX",
"date_from": "2025-01-01",
"date_to": "2025-06-30",
"page_size": 50
}
}
Tool Schema Reference
Full JSON Schema for each tool, for MCP client configuration:
{
"name": "list_dates",
"description": "List dates with available Congressional Record data",
"inputSchema": {
"type": "object",
"properties": {
"chamber": { "type": "string", "enum": ["House", "Senate", "Extensions of Remarks"] },
"state": { "type": "string", "description": "Two-letter state code" },
"member_id": { "type": "string" },
"year": { "type": "integer" },
"congress_number": { "type": "integer" }
}
}
}
{
"name": "list_topics",
"description": "List topics discussed in the Congressional Record",
"inputSchema": {
"type": "object",
"properties": {
"date": { "type": "string", "description": "YYYY-MM-DD" },
"chamber": { "type": "string", "enum": ["House", "Senate", "Extensions of Remarks"] },
"state": { "type": "string" },
"member_id": { "type": "string" },
"year": { "type": "integer" },
"congress_number": { "type": "integer" },
"include_counts": { "type": "boolean", "default": true }
}
}
}
{
"name": "get_statements",
"description": "Retrieve congressional statements for a specific topic",
"inputSchema": {
"type": "object",
"properties": {
"topic_id": { "type": "string" },
"topic_title": { "type": "string" },
"date": { "type": "string", "description": "YYYY-MM-DD" },
"chamber": { "type": "string", "enum": ["House", "Senate", "Extensions of Remarks"] },
"state": { "type": "string" },
"member_id": { "type": "string" },
"year": { "type": "integer" },
"congress_number": { "type": "integer" },
"limit": { "type": "integer", "default": 50, "maximum": 1000 },
"offset": { "type": "integer", "default": 0 },
"include_media": { "type": "boolean", "default": false },
"include_artifacts": { "type": "boolean", "default": false },
"include_crec_pages": { "type": "boolean", "default": false }
}
}
}
{
"name": "search_statements",
"description": "Keyword or semantic search across congressional statements",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query text" },
"mode": { "type": "string", "enum": ["keyword", "semantic"], "default": "keyword" },
"chamber": { "type": "string", "enum": ["House", "Senate", "Extensions of Remarks"] },
"state": { "type": "string" },
"member_id": { "type": "string" },
"year": { "type": "integer" },
"congress_number": { "type": "integer" },
"date_from": { "type": "string", "description": "YYYY-MM-DD" },
"date_to": { "type": "string", "description": "YYYY-MM-DD" },
"search_in": { "type": "string", "enum": ["title", "statement", "both"], "default": "both" },
"page": { "type": "integer", "default": 1 },
"page_size": { "type": "integer", "default": 50, "maximum": 100 }
},
"required": ["query"]
}
}