@pipeworx/oneinfo-storage
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/oneinfo-storage’s. Install: one-click buttons
Connect to just the @pipeworx/oneinfo-storage pack
https://gateway.pipeworx.io/oneinfo-storage/mcp — only @pipeworx/oneinfo-storage’s own tools, nothing else in the catalog.
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 1INFO — a document index (title, issuer, category, timestamp, document link), updated same-day, covering the ~314 issuers that use 1INFO instead of eMarket Storage as their Officially Appointed Mechanism (OAM) for EU Transparency Directive filings.
Tools
oneinfo_search_disclosures(company?, ndg?, category?, date_from?, date_to?, limit?, offset?)— search disclosures by issuer (name, resolved against 1INFO’s own 314-issuer list, or a knownndg), category, and/or a publication date window. Returns newest first.oneinfo_get_disclosure(id, date)— fetch one disclosure by its protocolCode and publication date (both come from a prior search — this source has no by-id-only lookup).
Why this pack exists — and why it’s separate from emarket-storage
Italy has TWO Officially Appointed Mechanisms for Transparency Directive
disclosures: eMarket Storage (Teleborsa) and 1INFO. An issuer discloses
through exactly one of the two — there is no overlap, so neither pack can
be dropped in favor of the other. Confirmed live 2026-09-24: 1INFO’s own
314-issuer list includes IREN and SOMEC, both absent from eMarket Storage’s
picklist; roughly half of STAR-segment issuers use 1INFO. If a company
isn’t found here, try emarket-storage’s emarket_search_disclosures
instead (and vice versa — emarket-storage’s not-found note points back
here).
One call per day, not one call per issuer
company/ndg are optional on oneinfo_search_disclosures. Omit them and
pass only date_from/date_to (and optionally category) to get every
1INFO issuer’s disclosures for that window in ONE call — verified live
2026-10-19. A design partner doing a daily check across ~155 issuers across
all three ESEF-regulator packs was instead calling once per issuer and
exhausting a 50-credit-per-call allowance in ~35 calls (fleet #3300); the
date-window call (with no ndg to filter on, every row the scan finds is a
match) is the cheap way to do that check.
⚠️ Six things a caller must know
- 1INFO-covered issuers only — not the full Italian market. A company
search that matches nothing returns an explanatory
note, not a bare error, pointing atemarket-storageinstead. This pack does not merge eMarket Storage data. - This is a document index, not an XBRL-facts API. Every row is a
disclosure EVENT: a title, an issuer, a category, a publication timestamp,
and a link to the underlying document. There is no per-fact extraction.
For XBRL facts (net income, revenue…) from Italian ANNUAL reports, use
esef-filings(proxies filings.xbrl.org) — measured 2026-09-24: annual filings from 1INFO issuers (SOMEC, IREN, Softlab) reached filings.xbrl.org about 6 days after they were stored here. There is no XBRL-facts source anywhere for HALF-YEAR reports (ESEF is annual-only by construction), so this pack is the only structured way to see those land. - No ISIN. LEI appears only embedded in the filename of XBRL-tagged
annual-report ZIPs (
has_xbrl: truerows — e.g.81560001692D0424C949-2025-12-31-1-it.htmlinside SOMEC’s FY2025 ZIP). Identify issuers by name (resolved against 1INFO’s own list) or byndg(1INFO’s internal numeric id) directly once you have it from a prior search. date_tois INCLUSIVE (the last local-calendar day you want, Europe/Rome). Unlikeemarket-storage, this pack filters dates itself client-side rather than passing a range upstream, so there’s no exclusive-upstream-bound trap to work around — verified live 2026-09-24:date_from=2026-09-22&date_to=2026-09-22returns the one disclosure actually published that day (UNIDATA), proving the last day is included.- No server-side filter by issuer exists on this source. Verified live
2026-09-24: 1INFO’s
/API/Documentiendpoint honorsSearchFilter[categoria](it genuinely narrows the result set) but silently IGNORES bothSearchFilter[ndg]and the DataTables globalsearch[value]—recordsFilteredis identical with or without them. This pack resolves a company tondgand filters CLIENT-SIDE while paging the (always storage-date-descending) result set. Adate_from/date_towindow is scanned to completion (bounded to 6 upstream requests / ~6,000 rows as a safety cap); an open-ended company-only search stops as soon as it haslimitmatches, which is cheap but may miss an issuer’s older filings. Every response says honestly how far it scanned (scanned.oldest_date_local,scanned.stopped_reason) and whethermatched_in_scanned_rangeis an exact count for the range (range_fully_scanned: true) or only a lower bound — never a fabricated total. fiscal_yearis now derived from the DOCUMENT, not the deposit date —fiscal_year_sourcesays which rule produced it.dataEsercizio(the field the oldfiscal_yearwas computed from) is a genuine fiscal-period-end date ONLY on XBRL-tagged rows; on every other row (most of them) 1INFO sets it EQUAL to the deposit timestamp. Verified live 2026-10-19 on Eurotech/ndg=789: the FY2024 ESEF ZIP correctly hasdataEsercizio= 2024-12-31, while its sibling FY2024 PDF (deposited 2025-04-01) haddataEsercizio=dataStoccaggio= 2025-04-01 — the old code reportedfiscal_year: "2025"for a document whose own title says “…annuale 2024…”. This pack now reads the year stated in the title for non-XBRL rows.fiscal_year_sourceis one ofxbrl_metadata(trusteddataEsercizio),title(extracted from the document’s own title text), ordeposit_date_fallback(no usable year in the title — still the old deposit-date value, never a fabricated one). Thedocument_url’s ownyearquery parameter is UNCHANGED by this fix — see the Gotchas section, it still needs the rawdataEserciziovalue or the download 302s.
Auth
Keyless. No account, no API key.
Data sources
- https://www.1info.it/PORTALE1INFO/ — 1INFO’s public disclosure storage portal (an EU Transparency Directive OAM for Italy). Pipeworx queries its JSON API live on every call; there is no bulk download.
Gotchas
- No formal REST API — this is a DataTables server-side endpoint.
POST /PORTALE1INFO/API/Documentirequires the standard DataTables form fields (draw,columns[0][...],order[0][...],start,length); a bare POST missing them fails with a server-sideNullReferenceException.GET /PORTALE1INFO/API/companies/documenti(314 issuers) andGET /PORTALE1INFO/API/documenti/Categoriesare plain GETs. - The download URL needs a
.pdfsuffix 1INFO’s own JSON does not show — a silent-404-shaped trap.PdfShow.aspxtakes afile(the document code) and ayear(the fiscal year) query parameter. When a row has an XBRL package (protocolCodeXbrlnon-null, e.g."165960_oneinfo.zip"), that value downloads as-is. But whenprotocolCodeXbrlis null — every half-year report, every ancillary filing, i.e. most rows — using the bareprotocolCode(e.g."171904_oneinfo") 302-redirects toError.aspx …documento non trovatowith no indication of what went wrong. Appending.pdf("171904_oneinfo.pdf") is what actually resolves — confirmed live 2026-09-24 on three different issuers/categories (UNIDATA REGEM, Banca Sistema 3.1, SOMEC 1.2), each 302 without the suffix and HTTP 200 with it. - The download URL’s
yearand the reportedfiscal_yearare now DIFFERENT things, on purpose.yearindocument_urlmust beromeYearLocal(dataEsercizio)EXACTLY — it is a resolver keyPdfShow.aspxitself checks, confirmed live 2026-10-19 on Eurotech’s FY2024 PDF (protocolCode152498_oneinfo):year=2025(its owndataEsercizio) resolves a 6.2MB PDF,year=2024or any other value 302s to an error page.fiscal_year(the metadata field) is the corrected, document-derived value — see “Six things a caller must know” above. Two sibling filings stored the same day for the same report can still need differentyearvalues in their URLs (SOMEC’s FY2025 ESEF ZIP and plain-PDF twin, stored 2 minutes apart, neededyear=2025andyear=2026respectively) — that part of the original finding is unchanged; only what gets REPORTED asfiscal_yearchanged. - Company-name resolution uses
rankMatches(exact > prefix > whole-wordsubstring) against 1INFO’s own issuer picklist, embedded at
/API/companies/documenti. An ambiguous match (multiple issuers tied at the same score) returnscandidatesinstead of guessing. - The
categoriafilter accepts multi-value rows — a single disclosure can carry more than one code (e.g."1.2,2.2");category_labelsreflects every code on the row, while filtering bycategorymatches on membership, not exact equality. - Dates are computed in Europe/Rome via
Intl.DateTimeFormat(DST-correct) rather than manual UTC offsets —dataStoccaggio/dataEsercizioare raw Unix-seconds timestamps with no timezone marker in the source JSON. oneinfo_get_disclosurehas no direct by-id endpoint on the source — it re-scans that day’s listing (up to 3 requests / 3,000 rows, far more than any single day’s market-wide volume — 33,444 rows measured over roughly 5 years) and matches onprotocolCode.- Each Documenti page fetch (search or lookup) gets a 15s timeout, not the shared 25s default. A single page genuinely takes longer than eMarket’s HTML listing — measured live 2026-10-19, ~3.1s typical — and the search/lookup loops are sequential, so the old 25s default bounded a 6-request search to a 150s worst case. A design partner reported ~230s stalls in production (fleet #3300) that line up with that order of magnitude; 15s is ~5x the measured normal latency while capping the new worst case at 90s (search) / 45s (by-id lookup).
Tools
- oneinfo_search_disclosures — Search Italian regulated company disclosures from 1INFO, one of Italy’s two EU Transparency Directive Officially Appointed Mechanisms (the other is eMarket Storage — use emarket-storage’s emarket_sear
- oneinfo_get_disclosure — Fetch a single 1INFO disclosure by its protocolCode id and publication date, as returned by oneinfo_search_disclosures. This source has no by-id-only lookup endpoint, only by-day listings, so both id
Tools
oneinfo_get_disclosure— Fetch a single 1INFO disclosure by its protocolCode id and publication date, as returned by oneinfo_search_disclosures. This source has no by-id-only lookup endpoint, only by-day listings, so both idoneinfo_search_disclosures— Search Italian regulated company disclosures from 1INFO, one of Italy's two EU Transparency Directive Officially Appointed Mechanisms (the other is eMarket Storage — use emarket-storage's emarket_sear