CongressMCP

Federal and 50-state legislative data for AI: bills, text, votes, members, and committees.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
77%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,127Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (0.88% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "congressmcp": {
      "url": "https://www.congressmcp.com/mcp"
    }
  }
}

Remote endpoints

https://www.congressmcp.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒list_subscription_plans

Use this before checkout to show the current CongressMCP plans and exact server-configured prices. Amounts are integer minor currency units, such as cents, and listing plans never starts a checkout or charge. Do not guess a price or use a plan identifier that is not returned here.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟑start_email_signup(email, name, accepted_terms)

Use this when the user wants to create or recover a CongressMCP account in chat. It sends a six-digit, 15-minute code to the supplied email after explicit acceptance of the terms and privacy policy. It does not start a subscription, expose whether an account already exists, or charge anything.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 254,
      "description": "Email address that will own the CongressMCP account."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Person or organization name for the account."
    },
    "accepted_terms": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly accepts https://www.congressmcp.com/terms and https://www.congressmcp.com/privacy."
    }
  },
  "required": [
    "email",
    "name",
    "accepted_terms"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
βšͺverify_email_signup(email, code)

Use this after start_email_signup when the user provides the six-digit code from their email. It verifies email control, activates the free account when needed, and returns a short-lived onboarding token for checkout and status calls. The token is not an OAuth token or API key and cannot access CongressMCP research or workspace data.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 254,
      "description": "The same normalized account email used to request the code."
    },
    "code": {
      "type": "string",
      "pattern": "^\\d{6}$",
      "description": "Six-digit code from the CongressMCP verification email."
    }
  },
  "required": [
    "email",
    "code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟑create_subscription_checkout(onboarding_token, plan_id, idempotency_key, confirm)

Use this only after email verification, a plan selection from list_subscription_plans, and explicit user confirmation. It creates an idempotent Stripe-hosted subscription Checkout tied to the verified account and returns the external checkout URL. Stripe collects card details outside chat, and creating the URL does not itself complete the purchase.

Input Schema

{
  "type": "object",
  "properties": {
    "onboarding_token": {
      "type": "string",
      "pattern": "^onb_[a-f0-9]{64}$",
      "description": "Short-lived onboarding token returned by verify_email_signup."
    },
    "plan_id": {
      "type": "string",
      "pattern": "^[a-z0-9_-]{1,40}$",
      "description": "Exact plan identifier returned by list_subscription_plans."
    },
    "idempotency_key": {
      "type": "string",
      "format": "uuid",
      "description": "Fresh UUID for this checkout; reuse only for the identical retry."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "True only after the user explicitly confirms creation of checkout for this exact plan and displayed price."
    }
  },
  "required": [
    "onboarding_token",
    "plan_id",
    "idempotency_key",
    "confirm"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟒get_subscription_status(onboarding_token)

Use this after checkout to check whether Stripe’s signed webhook has activated the verified account. It reads the current server-side entitlement and never retries payment or changes billing. When paid is true, use connect_congressmcp_account to authorize this chat.

Input Schema

{
  "type": "object",
  "properties": {
    "onboarding_token": {
      "type": "string",
      "pattern": "^onb_[a-f0-9]{64}$",
      "description": "Short-lived onboarding token returned by verify_email_signup."
    }
  },
  "required": [
    "onboarding_token"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
βšͺconnect_congressmcp_account

Use this after subscription activation when the user wants this chat to access CongressMCP. It returns the MCP OAuth challenge so the host can open CongressMCP’s authorization and consent flow. Never ask the user to paste a password, API key, access token, or refresh token into chat.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools