@pipeworx/emarket-storage
Connect: https://gateway.pipeworx.io/emarket-storage/mcp · Install: one-click buttons
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 2
Italian regulated company disclosures direct from eMarket Storage (Teleborsa) — a document index (title, issuer, timestamp, PDF link), updated same-day, built to fix the months-long lag in the community ESEF index for current-year Italian filings.
Tools
emarket_search_disclosures(company?, azienda_id?, category?, market?, cerca?, date_from?, date_to?, limit?, offset?)— search disclosures by issuer (name, resolved against eMarket’s own issuer list, or a known azienda_id), EU Transparency Directive category, market segment, and/or a publication date window. Returns newest first.emarket_get_disclosure(id, date)— fetch one disclosure by its Teleborsa protocollo id and publication date (both come from a prior search — this source has no by-id-only lookup).
Why this pack exists
esef-filings proxies filings.xbrl.org, a community index whose
current-year coverage for Italian issuers runs months behind (the same
problem amf-filings fixes for France). This pack goes to eMarket Storage,
one of Italy’s two Officially Appointed Mechanisms (OAMs) for Transparency
Directive disclosures, directly. Measured live 2026-09-23: a
category="104" (Informazioni privilegiate) search for 2026-09-22..09-24
returned a WEBUILD disclosure published 2026-09-23T17:13 local time (same
day as the query), with its PDF confirmed reachable (HTTP 200).
⚠️ Four things a caller must know
- eMarket-covered issuers only — this is not the full Italian market.
Italy has a SECOND, separate OAM, 1INFO (a different keyless JSON API
covering roughly 314 issuers). An issuer discloses through exactly one of
the two. Some well-known names are 1INFO issuers and will NOT be found
here — confirmed 2026-09-23 by checking eMarket Storage’s own ~480-company
issuer picklist: neither IREN nor SOMEC appear in it. A company
search that matches nothing returns an explanatory
note, not a bare error, saying the issuer may be a 1INFO issuer instead. This pack does not merge 1INFO data. - This is a document index, not an XBRL-facts API. Every row is a disclosure EVENT: a title, an issuer, a publication timestamp, and a link to the underlying PDF. There is no per-fact extraction — no “give me net income for FY2025” lookup.
- No ISIN or LEI. Unlike
amf-filings, eMarket Storage’s listing and its issuer picklist expose only a company NAME and an internal Teleborsa numeric id (azienda_id) — no ISIN/LEI field was found anywhere on the listing or a per-company page (checked 2026-09-23). Identify issuers by name (resolved automatically against the site’s own list) or byazienda_iddirectly once you have it from a prior search. date_tois INCLUSIVE in this tool — the underlying source’s owndata_tois EXCLUSIVE, and that mismatch silently drops rows, not just on an exact single-day query. Verified live 2026-09-24 against the raw source:data_from=2026-09-21&data_to=2026-09-22returned 13 rows, ALL from the 21st — the entire 22nd silently vanished, with no error, no empty-result signal, nothing to indicate the caller’s “21st through 22nd” request was answered wrong.emarket_search_disclosuresalways sends the source adata_toone calendar day past the caller’s inclusivedate_to(a lonedate_fromwith nodate_tomeans “just that one day”), and the response echoes bothdate_to(your inclusive value) andupstream_date_to_exclusive(the raw bound actually sent) — so a caller asking for “the 21st through the 22nd” now correctly gets rows from both days. Confirmed locally: the same 21→22 request now returns rows dated both 2026-09-21 and 2026-09-22.
Auth
Keyless. No account, no API key.
Data sources
- https://www.emarketstorage.it/it/comunicati-finanziari — eMarket
Storage’s public disclosure listing (Teleborsa, an EU Transparency
Directive OAM for Italy). Pipeworx queries it live on every call; there is
no bulk download or formal API (
/jsonapion this Drupal site 404s — it is HTML-only), so this pack parses the listing’s HTML directly.
Gotchas
- No formal API. The listing is a plain GET-filterable Drupal View
(
azienda,mercato,categoria,data_from/data_to,cerca). This pack parses the rendered HTML with targeted regex — Cloudflare Workers have no DOMParser (same approach asspain-tenders). - The row’s
datetimeattribute (on itstimeelement) is broken — every row observed carries something like34Z(just trailing seconds and a “Z”, an upstream templating bug), not a usable timestamp. This pack parses the human-readable text instead (“DD/MM/YYYY - HH:MM”, Italian local time) and returns it aspublished_at_localwith an explicittimezone: "Europe/Rome"field — it is NOT converted to UTC, since doing that correctly needs DST awareness this pack does not assume. - The listing does not expose a category per row — only the
categoriafilter parameter accepts one.emarket_search_disclosurestherefore echoes the requestedcategoryonto every result when the caller filtered by it (that is a true fact about a filtered result, not a guess); on an unfiltered search,categoryis honestlynullrather than fabricated. - Fixed page size of 24, confirmed live (every page but the last was
exactly 24 rows). There is no total-count field anywhere in the response;
when a next page exists, this pack reports
has_more: trueandat_least_total— a true LOWER BOUND (last_page_index * 24), never a fabricated exact total. Example measured 2026-09-23: SAIPEM narrowed to a 2-day window returned 1 disclosure; the same issuer over 2025-01-01.. 2026-09-24 returnedat_least_total: 120(122 exact, confirmed by walking to the last page) — the date filter genuinely binds. - Company-name resolution uses
rankMatches(exact > prefix > whole-word > substring) against eMarket’s own issuer picklist, embedded in every listing page load. An ambiguous match (multiple issuers tied at the same score) returnscandidatesinstead of guessing. emarket_get_disclosurehas no direct by-id endpoint on the source — it re-fetches the given date’s listing (paging up to 15 pages, i.e. up to 360 disclosures market-wide for that day) and matches on the protocollo id.
Tools
- emarket_search_disclosures — Search Italian regulated company disclosures from eMarket Storage (Teleborsa), one of Italy’s two EU Transparency Directive Officially Appointed Mechanisms. PREFER OVER esef_filing_search FOR ITALIAN
- emarket_get_disclosure — Fetch a single eMarket Storage disclosure by its Teleborsa protocollo id and publication date, as returned by emarket_search_disclosures. This source has no by-id lookup endpoint, only by-day listings
Tools
emarket_get_disclosure— Fetch a single eMarket Storage disclosure by its Teleborsa protocollo id and publication date, as returned by emarket_search_disclosures. This source has no by-id lookup endpoint, only by-day listingsemarket_search_disclosures— Search Italian regulated company disclosures from eMarket Storage (Teleborsa), one of Italy's two EU Transparency Directive Officially Appointed Mechanisms. PREFER OVER esef_filing_search FOR ITALIAN