{
  "tools": [
    {
      "name": "get_meps",
      "description": "Get Members of European Parliament with optional filters (country, political group)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g., 'SE' for Sweden)",
            "examples": [
              "SE",
              "DE",
              "FR",
              "IT",
              "ES"
            ]
          },
          "group": {
            "type": "string",
            "description": "Political group abbreviation (e.g., PPE, S&D, Renew, Greens/EFA)",
            "examples": [
              "PPE",
              "S&D",
              "Renew",
              "Greens/EFA",
              "ECR",
              "ID",
              "The Left"
            ]
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_plenary_sessions",
      "description": "Get European Parliament plenary sessions within a specified date range",
      "inputSchema": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Meeting event ID for single meeting lookup"
          },
          "year": {
            "type": "number",
            "description": "Filter by calendar year (1900-2100, recommended for annual counts)",
            "minimum": 1900,
            "maximum": 2100
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD format)",
            "examples": [
              "2024-01-01"
            ]
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD format)",
            "examples": [
              "2024-12-31"
            ]
          },
          "location": {
            "type": "string",
            "description": "Session location (e.g., 'Strasbourg', 'Brussels')"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": []
      }
    },
    {
      "name": "search_documents",
      "description": "Search European Parliament documents by keyword, or retrieve a single document by docId",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single document lookup (bypasses keyword search)"
          },
          "keyword": {
            "type": "string",
            "description": "Search keyword or phrase (alphanumeric, spaces, hyphens, underscores)",
            "examples": [
              "climate change",
              "artificial intelligence"
            ]
          },
          "documentType": {
            "type": "string",
            "description": "Document type: REPORT, RESOLUTION, DECISION, DIRECTIVE, REGULATION, OPINION, AMENDMENT",
            "examples": [
              "REPORT",
              "RESOLUTION",
              "DIRECTIVE"
            ]
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          },
          "committee": {
            "type": "string",
            "description": "Committee identifier"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results (1-100)",
            "default": 20,
            "minimum": 1,
            "maximum": 100
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": []
      }
    },
    {
      "name": "get_parliamentary_questions",
      "description": "Get parliamentary questions with optional filters for type, author, topic, status, date range, or single lookup by docId",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single question lookup"
          },
          "type": {
            "type": "string",
            "description": "Question type (e.g., WRITTEN, ORAL, PRIORITY)",
            "examples": [
              "WRITTEN",
              "ORAL",
              "PRIORITY"
            ]
          },
          "author": {
            "type": "string",
            "description": "MEP identifier or name of question author"
          },
          "topic": {
            "type": "string",
            "description": "Question topic or keyword to search"
          },
          "status": {
            "type": "string",
            "description": "Question status: PENDING or ANSWERED",
            "enum": [
              "PENDING",
              "ANSWERED"
            ]
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results (1-100)",
            "default": 20,
            "minimum": 1,
            "maximum": 100
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_committee_info",
      "description": "Get information about European Parliament committees",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Committee identifier"
          },
          "abbreviation": {
            "type": "string",
            "description": "Committee abbreviation (e.g., 'ENVI', 'AGRI', 'ECON')",
            "examples": [
              "ENVI",
              "AGRI",
              "ECON",
              "LIBE"
            ]
          },
          "showCurrent": {
            "type": "boolean",
            "description": "If true, returns all current active corporate bodies",
            "default": false
          }
        }
      }
    },
    {
      "name": "get_voting_records",
      "description": "Get voting records from European Parliament sessions",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "Filter by specific session ID",
            "examples": [
              "2024-01-15"
            ]
          },
          "mepId": {
            "type": "string",
            "description": "Filter by specific MEP ID",
            "examples": [
              "12345"
            ]
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          },
          "topic": {
            "type": "string",
            "description": "Vote topic or keyword to search",
            "minLength": 1,
            "maxLength": 200
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date filter (YYYY-MM-DD format)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "dateTo": {
            "type": "string",
            "description": "End date filter (YYYY-MM-DD format)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0,
            "minimum": 0
          }
        }
      }
    },
    {
      "name": "monitor_legislative_pipeline",
      "description": "Monitor European Parliament legislative pipeline status with bottleneck detection and forecasting",
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Pipeline status filter (ALL, ACTIVE, STALLED, COMPLETED)",
            "default": "ACTIVE"
          },
          "committee": {
            "type": "string",
            "description": "Filter by committee abbreviation"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results (1-100)",
            "default": 20,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "analyze_legislative_effectiveness",
      "description": "Analyze legislative effectiveness of an MEP or committee with productivity, quality, and impact scores",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subjectType": {
            "type": "string",
            "description": "Subject type to analyze",
            "enum": [
              "MEP",
              "COMMITTEE"
            ]
          },
          "subjectId": {
            "type": "string",
            "description": "Subject identifier (MEP ID or committee abbreviation)"
          },
          "dateFrom": {
            "type": "string",
            "description": "Analysis start date in YYYY-MM-DD format"
          },
          "dateTo": {
            "type": "string",
            "description": "Analysis end date in YYYY-MM-DD format"
          }
        },
        "required": [
          "subjectType",
          "subjectId"
        ]
      }
    },
    {
      "name": "get_mep_details",
      "description": "Get detailed information about a specific MEP including biography, contact information, committee memberships, and parliamentary activities",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "MEP identifier (e.g., 'MEP-124810')",
            "examples": [
              "MEP-124810"
            ]
          }
        },
        "required": [
          "id"
        ]
      }
    },
    {
      "name": "analyze_voting_patterns",
      "description": "Analyze voting behavior patterns for a specific MEP, including alignment with political group",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mepId": {
            "type": "string",
            "description": "MEP identifier",
            "examples": [
              "MEP-124810"
            ]
          },
          "dateFrom": {
            "type": "string",
            "description": "Analysis start date in YYYY-MM-DD format",
            "examples": [
              "2024-01-01"
            ]
          },
          "compareWithGroup": {
            "type": "boolean",
            "description": "Whether to compare MEP voting with political group average",
            "default": true
          }
        },
        "required": [
          "mepId"
        ]
      }
    },
    {
      "name": "track_legislation",
      "description": "Track the progress of a legislative procedure through the European Parliament",
      "inputSchema": {
        "type": "object",
        "properties": {
          "procedureId": {
            "type": "string",
            "description": "Legislative procedure identifier (e.g., '2024/0001(COD)')",
            "examples": [
              "2024/0001(COD)"
            ]
          }
        },
        "required": [
          "procedureId"
        ]
      }
    },
    {
      "name": "generate_report",
      "description": "Generate an analytical report on European Parliament data (MEP activity, committee performance, voting statistics, or legislation progress)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "reportType": {
            "type": "string",
            "description": "Type of report to generate",
            "enum": [
              "MEP_ACTIVITY",
              "COMMITTEE_PERFORMANCE",
              "VOTING_STATISTICS",
              "LEGISLATION_PROGRESS"
            ],
            "examples": [
              "MEP_ACTIVITY",
              "VOTING_STATISTICS"
            ]
          },
          "subjectId": {
            "type": "string",
            "description": "Subject identifier (MEP ID, committee ID, etc.) \u2014 optional for aggregate reports",
            "examples": [
              "MEP-124810",
              "ENVI"
            ]
          },
          "dateFrom": {
            "type": "string",
            "description": "Report period start date in YYYY-MM-DD format",
            "examples": [
              "2024-01-01"
            ]
          }
        },
        "required": [
          "reportType"
        ]
      }
    },
    {
      "name": "assess_mep_influence",
      "description": "Compute MEP influence score using a 5-dimension weighted model: Voting Activity (25%), Legislative Output (25%), Committee Engagement (20%), Parliamentary Oversight (15%), Coalition Building (15%)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mepId": {
            "type": "string",
            "description": "MEP identifier",
            "examples": [
              "MEP-124810"
            ]
          },
          "dateFrom": {
            "type": "string",
            "description": "Analysis start date in YYYY-MM-DD format"
          },
          "dateTo": {
            "type": "string",
            "description": "Analysis end date in YYYY-MM-DD format"
          }
        },
        "required": [
          "mepId"
        ]
      }
    },
    {
      "name": "analyze_coalition_dynamics",
      "description": "Analyze political group coalition dynamics including cohesion rates, cross-party alliances, defection rates, and stress indicators",
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Political group identifiers to analyze (omit for all groups, 1-10 items)"
          },
          "dateFrom": {
            "type": "string",
            "description": "Analysis start date in YYYY-MM-DD format"
          },
          "dateTo": {
            "type": "string",
            "description": "Analysis end date in YYYY-MM-DD format"
          },
          "minimumCohesion": {
            "type": "number",
            "description": "Minimum cohesion threshold for alliance detection (0-1)",
            "default": 0.5,
            "minimum": 0,
            "maximum": 1
          }
        }
      }
    },
    {
      "name": "detect_voting_anomalies",
      "description": "Detect unusual voting patterns including party defections, abstention spikes, and low attendance anomalies",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mepId": {
            "type": "string",
            "description": "MEP identifier (omit for broad analysis)"
          },
          "groupId": {
            "type": "string",
            "description": "Political group to analyze"
          },
          "dateFrom": {
            "type": "string",
            "description": "Analysis start date in YYYY-MM-DD format"
          },
          "dateTo": {
            "type": "string",
            "description": "Analysis end date (YYYY-MM-DD)"
          },
          "sensitivityThreshold": {
            "type": "number",
            "description": "Anomaly sensitivity (0-1, lower = more)",
            "default": 0.3,
            "minimum": 0,
            "maximum": 1
          }
        }
      }
    },
    {
      "name": "compare_political_groups",
      "description": "Compare political groups across multiple dimensions: voting discipline, activity level, legislative output, attendance, and cohesion",
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Political group identifiers to compare (minimum 2, maximum 10)"
          },
          "dimensions": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "voting_discipline",
                "activity_level",
                "legislative_output",
                "attendance",
                "cohesion"
              ]
            },
            "description": "Comparison dimensions (omit for all)"
          },
          "dateFrom": {
            "type": "string",
            "description": "Analysis start date in YYYY-MM-DD format"
          },
          "dateTo": {
            "type": "string",
            "description": "Analysis end date (YYYY-MM-DD)"
          }
        },
        "required": [
          "groupIds"
        ]
      }
    },
    {
      "name": "analyze_committee_activity",
      "description": "Analyze European Parliament committee workload, meeting frequency, document production, legislative output, and member engagement",
      "inputSchema": {
        "type": "object",
        "properties": {
          "committeeId": {
            "type": "string",
            "description": "Committee identifier or abbreviation (e.g., 'ENVI', 'ITRE')"
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          }
        }
      }
    },
    {
      "name": "track_mep_attendance",
      "description": "Track and analyze MEP attendance patterns across plenary sessions",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mepId": {
            "type": "string",
            "description": "MEP identifier (omit for group/country overview)"
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          }
        }
      }
    },
    {
      "name": "analyze_country_delegation",
      "description": "Analyze a country's MEP delegation \u2014 political group distribution, voting behavior, committee presence, and national cohesion",
      "inputSchema": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (e.g., 'SE', 'DE', 'FR')"
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          }
        },
        "required": [
          "country"
        ]
      }
    },
    {
      "name": "generate_political_landscape",
      "description": "Generate a comprehensive political landscape overview of the European Parliament \u2014 group sizes, seat shares, coalition dynamics",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          }
        }
      }
    },
    {
      "name": "get_current_meps",
      "description": "Get currently active Members of European Parliament with active mandates",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_speeches",
      "description": "Get European Parliament plenary speeches and debate contributions",
      "inputSchema": {
        "type": "object",
        "properties": {
          "speechId": {
            "type": "string",
            "description": "Speech ID for single speech lookup"
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          },
          "year": {
            "type": "number",
            "description": "Filter by calendar year (1900-2100)",
            "minimum": 1900,
            "maximum": 2100
          }
        }
      }
    },
    {
      "name": "get_procedures",
      "description": "Get European Parliament legislative procedures",
      "inputSchema": {
        "type": "object",
        "properties": {
          "processId": {
            "type": "string",
            "description": "Process ID for single procedure lookup"
          },
          "year": {
            "type": "number",
            "description": "Filter by year (e.g., 2024)"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_adopted_texts",
      "description": "Get European Parliament adopted texts including legislative resolutions, positions, and non-legislative resolutions",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single adopted text lookup"
          },
          "year": {
            "type": "number",
            "description": "Filter by year of adoption"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_events",
      "description": "Get European Parliament events including hearings, conferences, seminars, and institutional events",
      "inputSchema": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Event ID for single event lookup"
          },
          "dateFrom": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD)"
          },
          "dateTo": {
            "type": "string",
            "description": "End date (YYYY-MM-DD)"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          },
          "year": {
            "type": "number",
            "description": "Filter by calendar year (1900-2100)",
            "minimum": 1900,
            "maximum": 2100
          }
        }
      }
    },
    {
      "name": "get_meeting_activities",
      "description": "Get activities linked to a specific EP plenary sitting (debates, votes, presentations)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sittingId": {
            "type": "string",
            "description": "Meeting / sitting identifier"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": [
          "sittingId"
        ]
      }
    },
    {
      "name": "get_meeting_decisions",
      "description": "Get decisions made in a specific EP plenary sitting",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sittingId": {
            "type": "string",
            "description": "Meeting / sitting identifier"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": [
          "sittingId"
        ]
      }
    },
    {
      "name": "get_mep_declarations",
      "description": "Get MEP declarations of financial interests filed under the Rules of Procedure",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single declaration lookup"
          },
          "year": {
            "type": "number",
            "description": "Filter by filing year"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_incoming_meps",
      "description": "Get incoming Members of European Parliament for the current parliamentary term",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_outgoing_meps",
      "description": "Get outgoing Members of European Parliament for the current parliamentary term",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_homonym_meps",
      "description": "Get homonym Members of European Parliament (MEPs with identical names)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_plenary_documents",
      "description": "Get European Parliament plenary documents",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single document lookup"
          },
          "year": {
            "type": "number",
            "description": "Filter by year"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_committee_documents",
      "description": "Get European Parliament committee documents",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single document lookup"
          },
          "year": {
            "type": "number",
            "description": "Filter by year"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_plenary_session_documents",
      "description": "Get European Parliament plenary session documents (agendas, minutes, voting lists)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single document lookup"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_plenary_session_document_items",
      "description": "Get European Parliament plenary session document items",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_controlled_vocabularies",
      "description": "Get European Parliament controlled vocabularies (standardized classification terms)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "vocId": {
            "type": "string",
            "description": "Vocabulary ID for single vocabulary lookup"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_external_documents",
      "description": "Get external documents (non-EP documents such as Council positions, Commission proposals)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "docId": {
            "type": "string",
            "description": "Document ID for single document lookup"
          },
          "year": {
            "type": "number",
            "description": "Filter by year"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        }
      }
    },
    {
      "name": "get_meeting_foreseen_activities",
      "description": "Get foreseen (planned) activities for a specific EP meeting/plenary sitting",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sittingId": {
            "type": "string",
            "description": "Meeting / sitting identifier"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": [
          "sittingId"
        ]
      }
    },
    {
      "name": "get_procedure_events",
      "description": "Get events linked to a specific EP legislative procedure (hearings, debates, votes)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "processId": {
            "type": "string",
            "description": "Procedure process ID"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": [
          "processId"
        ]
      }
    },
    {
      "name": "get_meeting_plenary_session_documents",
      "description": "Retrieve plenary session documents linked to a specific EP meeting (plenary sitting)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sittingId": {
            "type": "string",
            "description": "EP plenary sitting identifier"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": [
          "sittingId"
        ]
      }
    },
    {
      "name": "get_meeting_plenary_session_document_items",
      "description": "Retrieve plenary session document items linked to a specific EP meeting (plenary sitting)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sittingId": {
            "type": "string",
            "description": "EP plenary sitting identifier"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results to return (1-100)",
            "default": 50
          },
          "offset": {
            "type": "number",
            "description": "Pagination offset",
            "default": 0
          }
        },
        "required": [
          "sittingId"
        ]
      }
    },
    {
      "name": "network_analysis",
      "description": "MEP relationship network mapping using committee co-membership. Computes centrality scores, cluster assignments, bridging MEPs, and network density metrics",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mepId": {
            "type": "number",
            "description": "Optional numeric EP API internal MEP ID to focus the network analysis (ego network). Note: Phase 6 OSINT tools use numeric IDs from the EP API v2, unlike core tools which use string identifiers like 'MEP-124810'"
          },
          "analysisType": {
            "type": "string",
            "enum": [
              "committee",
              "voting",
              "combined"
            ],
            "description": "Preferred analysis mode",
            "default": "combined"
          },
          "depth": {
            "type": "number",
            "description": "Network traversal depth (1-3)",
            "minimum": 1,
            "maximum": 3,
            "default": 2
          }
        }
      }
    },
    {
      "name": "sentiment_tracker",
      "description": "Track political group institutional positioning and inferred sentiment using seat-share distribution as a proxy indicator",
      "inputSchema": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "string",
            "description": "Political group ID to track (omit for all groups)"
          },
          "timeframe": {
            "type": "string",
            "enum": [
              "last_month",
              "last_quarter",
              "last_year"
            ],
            "description": "Time window label",
            "default": "last_quarter"
          }
        }
      }
    },
    {
      "name": "early_warning_system",
      "description": "Detect emerging political shifts, unusual voting changes, and coalition fracture signals",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sensitivity": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "description": "Detection sensitivity",
            "default": "medium"
          },
          "focusArea": {
            "type": "string",
            "enum": [
              "coalitions",
              "attendance",
              "all"
            ],
            "description": "Area of political activity to monitor",
            "default": "all"
          }
        }
      }
    },
    {
      "name": "comparative_intelligence",
      "description": "Cross-reference MEP activities across committees, delegations, and legislative procedures for comprehensive multi-dimensional profiling",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mepIds": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "List of numeric EP API internal MEP IDs to compare (2-10 MEPs). Note: Phase 6 OSINT tools use numeric IDs from the EP API v2, unlike core tools which use string identifiers like 'MEP-124810'"
          },
          "dimensions": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "voting",
                "committee",
                "legislative",
                "attendance"
              ]
            },
            "description": "Dimensions to include in the comparison"
          }
        },
        "required": [
          "mepIds"
        ]
      }
    },
    {
      "name": "correlate_intelligence",
      "description": "Cross-tool OSINT intelligence correlation engine combining outputs from multiple intelligence tools for consolidated alerts and insights",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mepIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "MEP identifiers to cross-correlate (1-5 MEPs)"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Political groups for coalition fracture analysis (max 8)"
          },
          "sensitivityLevel": {
            "type": "string",
            "enum": [
              "HIGH",
              "MEDIUM",
              "LOW"
            ],
            "description": "Alert sensitivity",
            "default": "MEDIUM"
          },
          "includeNetworkAnalysis": {
            "type": "boolean",
            "description": "Run network centrality analysis",
            "default": false
          }
        },
        "required": [
          "mepIds"
        ]
      }
    },
    {
      "name": "get_all_generated_stats",
      "description": "Retrieve precomputed European Parliament activity statistics (2004-2026) with monthly breakdowns, category rankings, percentile scores, statistical analysis, political landscape history, analytical commentary, and trend-based predictions for 2027-2031",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "Activity category to focus on (default: all)",
            "enum": [
              "all",
              "plenary_sessions",
              "legislative_acts",
              "roll_call_votes",
              "committee_meetings",
              "parliamentary_questions",
              "resolutions",
              "speeches",
              "adopted_texts",
              "political_groups",
              "procedures",
              "events",
              "documents",
              "mep_turnover",
              "declarations"
            ],
            "default": "all"
          },
          "yearFrom": {
            "type": "number",
            "description": "Start year for filtering (default: 2004)",
            "minimum": 2004,
            "maximum": 2031
          },
          "yearTo": {
            "type": "number",
            "description": "End year for filtering (default: 2026)",
            "minimum": 2004,
            "maximum": 2031
          },
          "includeMonthlyBreakdown": {
            "type": "boolean",
            "description": "Include month-by-month activity data (default: false)",
            "default": false
          },
          "includePredictions": {
            "type": "boolean",
            "description": "Include trend-based predictions for 2027-2031 (default: true)",
            "default": true
          },
          "includeRankings": {
            "type": "boolean",
            "description": "Include percentile rankings and statistics (default: true)",
            "default": true
          }
        }
      }
    },
    {
      "name": "get_server_health",
      "description": "Check server health and feed availability status. Returns server version, uptime, per-feed health status, and overall availability level. Does not make upstream API calls.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "get_procedure_event_by_id",
      "description": "Get a specific event linked to a legislative procedure by process ID and event ID",
      "inputSchema": {
        "type": "object",
        "properties": {
          "processId": {
            "type": "string",
            "description": "Procedure process ID"
          },
          "eventId": {
            "type": "string",
            "description": "Event identifier"
          }
        },
        "required": [
          "processId",
          "eventId"
        ]
      }
    },
    {
      "name": "get_adopted_texts_feed",
      "description": "Get recently updated adopted texts from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "workType": {
            "type": "string",
            "description": "Work type filter"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_meps_feed",
      "description": "Get recently updated MEPs from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_events_feed",
      "description": "Get recently updated EP events from the feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "activityType": {
            "type": "string",
            "description": "Activity type filter"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_procedures_feed",
      "description": "Get recently updated legislative procedures from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "processType": {
            "type": "string",
            "description": "Process type filter"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_documents_feed",
      "description": "Get recently updated documents from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_plenary_documents_feed",
      "description": "Get recently updated plenary documents from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_committee_documents_feed",
      "description": "Get recently updated committee documents from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_plenary_session_documents_feed",
      "description": "Get recently updated plenary session documents from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_external_documents_feed",
      "description": "Get recently updated external documents from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "workType": {
            "type": "string",
            "description": "Work type filter"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_parliamentary_questions_feed",
      "description": "Get recently updated parliamentary questions from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_corporate_bodies_feed",
      "description": "Get recently updated corporate bodies (committees, delegations) from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_controlled_vocabularies_feed",
      "description": "Get recently updated controlled vocabularies from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    },
    {
      "name": "get_mep_declarations_feed",
      "description": "Get recently updated MEP financial interest declarations from the EP feed",
      "inputSchema": {
        "type": "object",
        "properties": {
          "timeframe": {
            "type": "string",
            "description": "Feed timeframe",
            "enum": [
              "today",
              "one-day",
              "one-week",
              "one-month",
              "three-months",
              "one-year"
            ],
            "default": "one-week"
          },
          "startDate": {
            "type": "string",
            "description": "Start date (YYYY-MM-DD) \u2014 required when timeframe is 'custom'"
          },
          "workType": {
            "type": "string",
            "description": "Work type filter"
          },
          "limit": {
            "type": "number",
            "description": "Maximum results (1-100)",
            "default": 50,
            "minimum": 1,
            "maximum": 100
          }
        }
      }
    }
  ]
}
