get_senate_communication
Retrieve Senate communication data from Congress.gov, including executive communications, presidential messages, and petitions, filtered by congress, type, number, or date range.
Instructions
Retrieve Senate communication information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/SenateCommunicationEndpoint.md
Args: congress: Congress number (e.g., 118 for 118th Congress) communication_type: Type of communication - ec: Executive Communication - pm: Presidential Message - pom: Petition or Memorial 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: Senate communication data from Congress.gov API
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| congress | No | ||
| communication_type | No | ||
| communication_number | No | ||
| offset | No | ||
| limit | No | ||
| from_datetime | No | ||
| to_datetime | No |
Implementation Reference
- server.py:967-1026 (handler)The handler function for the 'get_senate_communication' MCP tool. It queries the Congress.gov API for senate communications based on parameters like congress, communication_type, etc., handles pagination and date ranges, and returns the JSON response or error.@mcp.tool() async def get_senate_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 Senate communication information from the Congress.gov API. Full documentation for this endpoint -> https://github.com/LibraryOfCongress/api.congress.gov/blob/main/Documentation/SenateCommunicationEndpoint.md Args: congress: Congress number (e.g., 118 for 118th Congress) communication_type: Type of communication - ec: Executive Communication - pm: Presidential Message - pom: Petition or Memorial 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: Senate communication data from Congress.gov API """ base_url = "https://api.congress.gov/v3/senate-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 senate communication information: {str(e)}", "status_code": getattr(e.response, "status_code", None) }
- server.py:967-967 (registration)The @mcp.tool() decorator registers the get_senate_communication function as an MCP tool.@mcp.tool()
- server.py:968-976 (schema)The function signature and docstring define the input schema (parameters with types and descriptions) and output type (dict) for the tool.async def get_senate_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: