get_house_communication
Retrieve House communication data from Congress.gov API to access executive communications, memorials, presidential messages, and petitions by congress number, type, date range, or specific number.
Instructions
Retrieve House communication information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/HouseCommunicationEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) communication_type: Type of communication - ec: Executive Communication - ml: Memorial - pm: Presidential Message - pt: Petition communication_number: Specific communication number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format)
Returns: dict: House communication data from Congress.gov API
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| communication_number | No | ||
| communication_type | No | ||
| congress | No | ||
| from_datetime | No | ||
| limit | No | ||
| offset | No | ||
| to_datetime | No |
Implementation Reference
- server.py:849-849 (registration)Registers the 'get_house_communication' tool with FastMCP using the @mcp.tool() decorator, which automatically uses the function name as the tool name.@mcp.tool()
- server.py:850-909 (handler)Implements the core logic for the 'get_house_communication' tool: builds the API endpoint URL based on provided parameters (congress, communication_type, communication_number), adds query parameters (api_key, format, offset, limit, date filters), performs an HTTP GET request to Congress.gov API, and returns the JSON response or an error dictionary.async def get_house_communication( congress: int | None = None, communication_type: str | None = None, communication_number: int | None = None, offset: int = 0, limit: int = 20, from_datetime: str | None = None, to_datetime: str | None = None ) -> dict: """ Retrieve House communication information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/HouseCommunicationEndpoint.md Args: congress: Congress number (e.g., 118 for 118th Congress) communication_type: Type of communication - ec: Executive Communication - ml: Memorial - pm: Presidential Message - pt: Petition communication_number: Specific communication number offset: Starting record (default 0) limit: Maximum records to return (max 250, default 20) from_datetime: Start timestamp (YYYY-MM-DDTHH:MM:SSZ format) to_datetime: End timestamp (YYYY-MM-DDTHH:MM:SSZ format) Returns: dict: House communication data from Congress.gov API """ base_url = "https://api.congress.gov/v3/house-communication" url = base_url if congress: url += f"/{congress}" if communication_type: url += f"/{communication_type}" if communication_number: url += f"/{communication_number}" params = { "api_key": congress_gov_api_key, "format": "json", "offset": offset, "limit": min(limit, 250) } if from_datetime: params["fromDateTime"] = from_datetime if to_datetime: params["toDateTime"] = to_datetime try: response = requests.get(url, params=params) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: return { "error": f"Failed to retrieve house communication information: {str(e)}", "status_code": getattr(e.response, "status_code", None) }