European Parliament MCP Server API - v1.3.9
    Preparing search index...

    Sub-client for legislative procedures and adopted-texts EP API endpoints.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    baseURL: string

    European Parliament API base URL.

    cache: LRUCache<string, Record<string, unknown>>

    LRU cache for API responses.

    enableRetry: boolean

    Enable automatic retry on transient failures.

    maxResponseBytes: number

    Maximum allowed response body size in bytes.

    maxRetries: number

    Maximum number of retry attempts.

    rateLimiter: RateLimiter

    Token bucket rate limiter.

    timeoutMs: number

    Request timeout in milliseconds.

    Methods

    • Evicts a single cache entry matching the given endpoint and params. Sub-clients use this when they detect that a successfully-fetched payload is a content-pending sentinel that must not be served from cache for the remainder of the TTL — eviction lets availability recover as soon as the upstream document is enriched.

      Parameters

      • endpoint: string

        API endpoint path (same value passed to get)

      • Optionalparams: Record<string, unknown>

        Optional query parameters (same value passed to get)

      Returns void

    • Executes a cached, rate-limited GET request to the EP API.

      Type Parameters

      • T extends Record<string, unknown>

        Expected response type (extends Record<string, unknown>)

      Parameters

      • endpoint: string

        API endpoint path (relative to baseURL)

      • Optionalparams: Record<string, unknown>

        Optional query parameters

      • OptionalminimumTimeoutMs: number

        Optional per-request minimum timeout in milliseconds. When provided, the effective timeout is Math.max(minimumTimeoutMs, this.timeoutMs), so the global timeout (set via --timeout or EP_REQUEST_TIMEOUT_MS) can still extend it beyond the per-endpoint minimum. Use for known slow EP API endpoints such as procedures/feed.

      Returns Promise<T>

      Promise resolving to the typed API response

      On HTTP errors, network failures, or parse failures

    • Returns a single adopted text by document ID. EP API Endpoint: GET /adopted-texts/{doc-id}

      Content-pending detection: The EP Open Data Portal will sometimes respond with HTTP 200 for a document that is indexed in the feed but whose detail enrichment has not yet completed — every transformable field comes back empty. Returning that shape to callers would emit a response that passes JSON-schema validation but carries no data, leading to blank titles/dates/references being rendered downstream. We treat this sentinel as a 404 so callers get the same error semantics they would for a truly missing document, and we also evict the cached empty payload so availability recovers as soon as the upstream document is enriched (instead of blocking for the full cache TTL).

      Parameters

      • docId: string

      Returns Promise<AdoptedText>

      400 when docId is empty or whitespace.

      404 in two cases:

      • the upstream returns HTTP 404 because no document exists for docId (re-thrown by BaseEPClient.get); or
      • the upstream returns HTTP 200 but every transformable field is empty (the indexed-but-content-pending sentinel detected here).
    • Retrieves recently updated adopted texts via the feed endpoint. EP API Endpoint: GET /adopted-texts/feed

      Configurable-window feed. Extended timeout applied for one-month.

      Parameters

      • params: { startDate?: string; timeframe?: string; workType?: string } = {}

      Returns Promise<JSONLDResponse<Record<string, unknown>>>

    • Returns cache statistics for monitoring and debugging.

      Returns { hitRate: number; hits: number; maxSize: number; misses: number; size: number }

      { size, maxSize, hitRate, hits, misses }

    • Returns a single procedure by ID.

      The EP API wraps single-item responses in a JSON-LD data array, so this method extracts data[0] before transforming.

      EP API Endpoint: GET /procedures/{process-id}

      Parameters

      • processId: string

        Procedure process-id in "YYYY-NNNN" format (e.g. "2024-0006"). This is different from the human-readable Procedure.id ("COD/YYYY/NNNN") or Procedure.reference ("YYYY/NNNN(COD)") fields.

      Returns Promise<Procedure>

      When the procedure is not found (404)

    • Returns a single event within a procedure by event ID. EP API Endpoint: GET /procedures/{process-id}/events/{event-id}

      Parameters

      • processId: string

        Procedure process ID

      • eventId: string

        Event identifier within the procedure

      Returns Promise<EPEvent>

    • Returns legislative procedures. EP API Endpoint: GET /procedures

      Note: The EP API /procedures endpoint does not support a year query parameter per the OpenAPI spec — it only has process-type. Callers needing year-specific counts must filter client-side.

      Parameters

      • params: { limit?: number; offset?: number } = {}

        limit, offset

      Returns Promise<PaginatedResponse<Procedure>>

      Paginated list of procedures

    • Retrieves recently updated procedures via the feed endpoint. EP API Endpoint: GET /procedures/feed

      Note: The EP API procedures/feed endpoint is significantly slower than other feed endpoints — it typically takes 25–40 s even for one-week and 120+ seconds for one-month. An extended minimum timeout of 120 s is always applied.

      Parameters

      • params: { processType?: string; startDate?: string; timeframe?: string } = {}

      Returns Promise<JSONLDResponse<Record<string, unknown>>>