mcpField
E
Esef Filings

Esef Filings

リモート
pipeworx.io金融データ13 日前に更新
リポジトリ公式サイト

Esef Filings について

Esef Filingsは、filings.xbrl.orgの企業提出書類を検索し、xBRL-JSONレポートからIFRSの数値を取得する、認証不要のMCPサーバーです。欧州の報告制度やUAIFRSの提出情報を調べる研究者やアナリスト向けです。

主な機能

  1. 01企業・国・制度・年度・日付で提出書類を検索
  2. 02企業を特定し、レポートの言語版を整理
  3. 03値・通貨・期間を含むIFRS数値を取得
  4. 04重複数値を統合し、値の不一致を表示

活用シーン

  1. 01指定した国や年度の企業提出書類を調べる
  2. 02機械可読な年次報告書からIFRS数値を取得
  3. 03言語版を区別し、異なる報告期間を数える

MCP 対応

提出書類の検索、企業別一覧、数値取得をMCPクライアント向けツールとして提供します。認証情報なしでfilings.xbrl.orgのインデックスとレポートデータを参照します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://gateway.pipeworx.io/esef-filings/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

44
パラメーター型必須説明
qstringいいえquestion の別名。
askstringいいえquestion の別名。
textstringいいえquestion の別名。
inputstringいいえquestion の別名。
packsarrayいいえ任意。ルーティング対象をこれらのパックスラッグに限定します(例:["sec-form-d","sec-13f"])。その場合、ルーターは該当パック内のツールのみを選択します。省略すると、デフォルトの全カタログへのルーティングになります。スラッグは list_packs / search_packs / https://pipeworx.io/directory から取得できます。リストにない、または不明なスラッグは無視され、_meta.pack_scope.ignored に記載されます。該当するスラッグが 1 つもない場合は、カタログ全体にルーティングし、_meta.pack_scope.full_catalog:true を設定します(空の回答にはなりません)。
querystringいいえquestion の別名。
promptstringいいえquestion の別名。
messagestringいいえquestion の別名。
questionstringはい自然言語での質問またはリクエスト。query、q、prompt、text、input、ask、message をエイリアスとして使用できます。

詳細

@pipeworx/esef-filings

XBRL 提出書類インデックス MCP — XBRL International が運営する filings.xbrl.org インデックスに掲載された企業の年次報告書と、各報告書に含まれる IFRS 財務ファクトです。キーは不要です。

Pipeworx の一部です — AI エージェントを 1879 以上のライブデータソースに接続する MCP ゲートウェイです。これは独立した非公式の統合であり、上流プロバイダーとの提携、承認、公開はありません。

sec-xbrl の欧州版です。同じ考え方(規制当局の XBRL から会計ファクトを直接取得)ですが、提出書類制度が異なります。

ツール

  • esef_search_filings(entity_name?, country?, regime?, year?, period_end?, period_end_from?, period_end_to?, with_errors?, sort?, limit?, page?) — インデックスを検索します。企業名、LEI または国内識別番号、国、制度、期間終了日、XBRL 検証エラー/警告の件数、報告書の言語、xBRL-JSON、HTML 報告書、ビューアー、パッケージへのリンクを返します。このリストにない引数は、受け付けられる引数の一覧を示す user_error とともに拒否され、黙って破棄されることはありません(GOTCHA 1 を参照)。
  • esef_entity_filings(entity, limit?) — 企業名、LEI、または国内登録番号を解決し、1 社分のすべての提出書類を返します。解決された内容とその方法に加え、提出書類を個別の報告書ごとにまとめて返します(下記の「言語版」を参照)。
  • esef_filing_facts(fxo_id? | entity?, year?, concept?, include_dimensioned?, limit?) — 2 番目のステップです。提出書類の xBRL-JSON 報告書を開き、名前付きの IFRS ファクトを値、通貨、期間、概念とともに返します。

esef_search_filings と esef_entity_filings は提出書類の存在を確認します。金額を返すのは esef_filing_facts だけです。

対象範囲

正確に2 つの報告制度に基づく 25,640 件の提出書類です。

制度提出書類数国
ESEF約 15,996 件AT BE CY CZ DK ES FI FR GB GR IS IT LT NL NO PL PT RO SE
UAIFRS約 9,644 件UA

パック名は ESEF を示していますが、データソースの範囲は ESEF より広くなっています。country と regime はどちらも独立したフィルターなので、呼び出し側は意図した対象範囲を指定できます。下記の GOTCHA 2 を参照してください。これは見かけだけの違いではありません。

上記の表に加え、country: "LU"、"SI"、"EE" も受け付けます。これらはこのインデックスではなく、各国の OAM からリアルタイムで検索されます(GOTCHA 23 を参照)。"IE" と "BG" も同様に受け付けます(GOTCHA 24 を参照)。"GR" はすでに上記の表に含まれており、現在はライブデータによる補完も行われます。

認証

不要です。キーもアカウントも不要で、レート制限に関する説明も公開されていません。

filings.xbrl.org は非営利のインデックスであるため、このパックは意図的に負荷を抑えています。呼び出しごとにインデックスへのリクエストは 1 回、報告書の取得は最大 1 回で、プローブやファンアウトは行いません。また、実際に連絡可能な User-Agent(Pipeworx/1.0 (+https://pipeworx.io; [email protected]))を使用します。

注意点

GOTCHA 1 — 誤ったフィルターパラメーターは拒否されず、黙って無視されます

これは危険な落とし穴です。そのため、フィルターの構築処理は一つのヘルパーにまとめています。

API は JSON:API フィルターを次の 2 つの形式で受け取ります。

?filter%5Bcountry%5D=FI     bracketed shortcut, percent-encoded  -> meta.count 1168, Finnish records
?country=FI                 bracketed form written WITHOUT the brackets
                            -> HTTP 200, meta.count 25640, first record Ukrainian

2 つ目の形式は、フィルター付きクエリが成功したように見せかけた、フィルターなしのインデックス全体です。同じステータスコード、同じエンベロープ、同じフィールド名なので、見抜く手がかりはありません。

src/index.ts では、次の 2 つの方法で防いでいます。

  1. パックでは、フィルターに角括弧付きのショートカットを使いません。 flask-rest-jsonapi の複雑な形式 ?filter=[{"name":"country","op":"eq","val":"FI"}] を使います。角括弧を含まない単一のパラメーターなので、角括弧のエンコードを間違える心配がありません。さらに、属性名が正しくない場合は無視されず、明確なエラー(HTTP 400 "FilingSchema has no attribute bogus")が返されます。角括弧付きなのは page[size] と page[number] だけで、URLSearchParams を使う buildUrl() を通るため、角括弧はパーセントエンコードされます。
  2. verifyFilters() は、返された行が指定した条件に一致するか再確認します。 すべての esef_search_filings のレスポンスには filters_applied、filters_verified、filter_mismatches が含まれるため、フィルターが何らかの理由で効かなかった場合も、結果がひそかに広がるのではなく、ペイロードに現れます。

同じ失敗が、1 層上のツール境界でも起きていましたが、同じ方法で修正されました(fleet #2317)。 esef_search_filings では period_end_from/period_end_to が宣言されていなかったため、日付範囲としてもっともらしいこれらの名前を推測して指定した呼び出し元の引数は、ハンドラーによって黙って破棄されていました。スキーマエラーは発生せず、filters_requested には null としてそのまま返され、レスポンスは filters_verified: true と主張していました。ポルトガルを対象とした日付範囲付きのクエリが、日付を指定しないクエリと同じ、フィルターなしの合計 128 行を返していました。これを 2 つの方法で修正しました。period_end_from/period_end_to は、period_end に対する op: 'ge'/'le' の正式な範囲フィルターとして宣言され、他のすべてのフィルターと同様に verifyFilters() で検証されます。また、呼び出し元がほかに推測する可能性のある引数については、rejectUnknownArgs() が受け付け可能な引数の一覧を示す user_error をスローするため、名前にかかわらず、宣言されていない引数が黙って破棄されることはありません。

GOTCHA 2 — このインデックスは ESEF だけを対象としているわけではありません。そう説明すると誤った回答になります

フィルターなしのプローブで最初に返されるレコードはウクライナのものです。EDRPOU-32033791-2020-12-31-UAIFRS-UA-0 です。インデックスの 38% は UAIFRS です。ウクライナの情報も返されるのにパックを「欧州の提出書類」と説明するのは、リゾルバーの粒度に関する落とし穴です。呼び出し元には、粒度を取り違えた確信ありげな回答が返されます。

そのため、すべてのツールの説明で両方の制度を明記しています。regime はフィルターであり、返される各行にはそれぞれの country と regime が記載され、検索レスポンスには scope_note が含まれます。説明を編集する場合は、対象範囲に関する文を残してください。

GOTCHA 3 — 同じ年次報告書が、言語版ごとに 1 件ずつインデックスに登録されています

Citycon の FY2022 は 2 回登場します。…-ESEF-FI-1(フィンランド語)と …-ESEF-FI-0(英語)で、数値は同じですが fxo_id は異なります。インデックスの行数を報告書の数として数えると、企業の提出履歴が水増しされます。Citycon は提出書類 11 件、異なる会計年度 6 件です。

そのため、esef_entity_filings は filing_count(インデックスの行数)と report_count(異なる会計年度の数)の両方を返し、各版を preferred_edition の下にまとめます。説明文を読みやすくするため、英語版があればそちらを優先します。会社名から解決する場合、esef_filing_facts は英語版を選びます。

これは、報告書内の言語ディメンションとは異なる点に注意してください。各 xBRL-JSON ドキュメントは単一言語です。言語の違いは、提出書類間の 1 段上のレベルにあります。

注意点 4 — レポート内で同じ数値に何度もタグが付けられている

CityconのFY2022におけるEUR 5,100,000のifrs-full:ProfitLossは、バイト単位で同一のディメンションを持つ状態で3回(主要財務諸表、注記、資本の調整表)に表示され、さらにComponentsOfEquityAxisで内訳を示したコピーもあります。何も考慮せずに返すと、1つの利益額が6つの異なる数値に見えてしまいます。

esef_filing_factsは言語以外のすべてのディメンションでグループ化し、同一の値を集約して、occurrences(その値を裏付けるタグ付けの数)とdedup.repeat_taggings_collapsedを報告します。軸ディメンションを持つ内訳はデフォルトでは除外され(include_dimensioned: false)、dedup.dimensioned_facts_excludedに件数が記録されます。1つのディメンションセットに対して実際に矛盾する値がある場合は、どちらかを黙って選ぶのではなく、conflicting_valuesに表示されます。

注意点 5 — json_urlがnullの場合がある

インデックスの行の約1.5%には機械可読なレポートがなく、サンプルではreport_urlとviewer_urlもnullでした。この行はメタデータのみです(例:Cloetta ABの549300CSLHPO6Y1AZN37-2021-12-31-ESEF-SE-1。error_count: 1で、パッケージのzipのみを含みます)。esef_filing_factsは例外をスローする代わりに、残っているURLを示す{found: false, reason: 'no_machine_readable_report'}を返します。

注意点 6 — エンティティの指定にはidではなくidentifierを使う

JSON:APIのエンティティレコードには、id: "1597"とattributes.identifier: "549300P8N0P6KDGTJ206"の両方が含まれています。アドレス指定に使えるのはidentifierだけです。/api/entities/1597は404を返します。

さらに厄介なことに、identifierは常にfxo_idのプレフィックスとは限りません。ウクライナの提出書類では、fxo_idにEDRPOU-32033791-…が使われますが、アドレス指定にはプレフィックスのない32033791を使います。fxo_idのプレフィックスを使って提出書類とエンティティ名を結合すると、ウクライナの提出書類はすべてentity_name: nullになりました。このパックでは、代わりにrelationships.entity.links.relatedの末尾を使って結合します。

注意点 7 — xBRLの時点は1日遅い日付で記録される

xBRL-JSONの時点期間2023-01-01T00:00:00は、2022-12-31時点の貸借対照表を表します。時点は翌日の開始時刻です。生の文字列をそのまま読むと、1年もの誤差が生じます。describePeriod()は両方の形式を正規化するため、period_endとperiod_label(「2022-12-31時点」、「2022-01-01から2022-12-31まで」)はすでに修正済みです。

注意点 8 — 説明的な注記にも事実としてタグが付けられる

CityconのFY2022レポートにあるDisclosureOfShareCapitalReservesAndOtherEquityInterestExplanatoryは、2,500文字の文章です。テキスト値は600文字で切り詰められ、value_truncatedとvalue_lengthが設定されます。また、期間内では測定値が文章より先に並ぶため、concept: "Equity"の先頭には注記の文章ではなく、EUR 2,310,300,000の残高が表示されます。

GOTCHA 9 — インデックスの更新は提出シーズンに遅れ、当年の対象データはほぼありません

これはパックのバグではありませんが、実際にユーザーに不利益をもたらす落とし穴であり、しばらく文書化されていませんでした(fleet #2317 — 外部の開発者が同じ件数を独自に測定し、これを理由にパックの採用を見送りました)。filings.xbrl.org は任意参加型のコミュニティインデックスであり、規制当局のリアルタイムフィードではありません。企業の年次報告書は通常、報告期間の終了後、さらに XBRL International(または各国の収集機関)による処理後、数週間から数か月経ってから掲載されます。

year フィルターを指定して esef_search_filings で2026-09-23に実測:

国202320242025
PT770(CMVM 反映前 — GOTCHA 10 を参照)
ES1251131(CNMV 反映前 — GOTCHA 11 を参照)

現在の暦年を検索すると、通常は該当行がほとんどないか、まったく返されません。これは上流の更新遅延を反映したものであり、クエリの不具合や、提出企業が存在しない国を意味するものではありません。当会計年度のほぼリアルタイムのデータを想定するパイプラインを構築している場合、このインデックスでは期待に沿えません。実際にデータが登録されているのは、過去1〜2暦年分です。現在は、esef_search_filings のすべての応答(一致する場合も、該当なしの場合も)に、機械可読な coverage_note が含まれるため、呼び出し元はクエリが何も返さないことで気付くのではなく、ツールからこの情報を得られます。この注記は応答ごとに生成され、件数は記載しません(fleet #2379 — CNMV が統合された日に、固定値の「Spain 2025 = 1」が、実際の total_matching 118 と並んでしまいました)。PT、ES、NO、SE に絞った検索では、該当行が規制当局による公開に基づくことが示され、その規制当局のインデックスを読み取れなかった場合はその旨が示されます。それ以外の検索では、更新遅延に関する警告が表示されます。各行にはそれぞれの source が記載されます。上の表はインデックスのみを対象とした特定日時点のスナップショットであり、現在の対象状況を示すものではありません。

GOTCHA 10 — ポルトガルのデータは2か所から取得され、各行に取得元が記載されます

filings.xbrl.org には、2024年分のポルトガルの提出書類が7件、2025年分は0件登録されていました。一方、ポルトガルの発行体は、規制当局であり公式に指定された保管機関である CMVM(Comissão do Mercado de Valores Mobiliários)に、年間およそ50件の ESEF パッケージを公開しています。Jerónimo Martins の FY2025 レポートは2026-03-30に CMVM で公開されましたが、6か月後も filings.xbrl.org には掲載されていませんでした(fleet #2320)。

そのため、ポルトガルの提出書類は CMVM からも取得されます。

  • esef_search_filings で country: "PT" を指定するか、国を指定せずに CMVM が認識する会社名を指定すると、両方のソースを統合し、LEI + 期末日で重複を排除します。両方にあるレポートは1回だけ表示されます。source は cmvm または xbrl.org です。もう一方のコピーは also_on_xbrl_org / also_on_cmvm に記載され、merge.duplicates_collapsed には統合された件数が記録されます。
  • CMVM の行には、published_at(CMVM の公式公開時刻。リスボンのオフセット付き)、first_published_at(発行体は「株主総会に提出予定」のレポートを公開した後、株主総会で承認された版を公開することがよくあります。その場合、1つの行に両方の版が versions の下に記載されます)、indexed_at、パッケージの package_sha256、および CMVM 独自の ESEF viewer_url が含まれます。xbrl.org の行に含まれるのは date_added のみで、これはインデックスがレポートを取り込んだ日付であり、公開日ではありません。
  • CMVM の提出書類 ID は cmvm-1355933 のような形式です。これを fxo_id として esef_filing_facts に渡してください。会社名または LEI で解決する場合、最新期間については CMVM のコピーが優先されます。
  • CMVM の行には検証実行結果がないため、error_count / warning_count は null となり、with_errors: true の検索では CMVM の行が除外されます。
  • CMVM を参照したすべての応答には、last_successful_check、last_error、stale(48時間以内に成功したチェックがない場合)を含む cmvm_status が付与されます。 これにより、「CMVM が新しい情報を公開していない」状態と「CMVM を確認できなかった」状態を区別できます。後者を前者のように示してはいけません。Pipeworx ゲートウェイの外部(通常の npm install)では、cmvm_status.available は false となり、ポルトガルの行は filings.xbrl.org のデータのみから取得されます。
  • 2023年分の CMVM パッケージには、インライン XBRL を含まないプレーンな XHTML レポートがいくつかあります。それらの行には has_machine_readable_report: false と記載されます。
注意点 11 — スペインの提出書類も2つの場所から取得します(CNMV)

filings.xbrl.org には2024年分のスペインの提出書類が113件、2025年分は1件掲載されていました。一方、スペインの上場発行体はすべて、ESEF パッケージを含む年次財務報告書を、公式登録機関であるCNMV(Comisión Nacional del Mercado de Valores、スペインの規制当局)に提出しています。Técnicas Reunidas の FY2025 パッケージは2026-02-26に同機関で公開されました(フリート #2351)。

そのため、スペインの提出書類もポルトガルの提出書類が CMVM から取得されるのと同様に CNMV から取得されます(注意点 10)。統合、LEI + 期末日による重複排除、鮮度に関する契約も同じです。

  • source は cnmv です。もう一方のコピーは also_on_xbrl_org / also_on_cnmv です。CNMV を参照したすべてのレスポンスには cnmv_status が含まれます(フィールドは cmvm_status と同じです。チェックに成功しないまま48時間が経過すると stale になります)。
  • CNMV の提出書類 ID は登録番号です(例:cnmv-20912)。各行には national_identifier(発行体のスペインの NIF。例:A-28092583)と report_scope(consolidated または individual)も含まれます。発行体が個別会計と連結会計を1つのパッケージにまとめている場合は、ラベル付きで各1行(cnmv-<n> と cnmv-<n>-2)が作成されます。連結会計の行が filings.xbrl.org との照合対象です。
  • published_at は CNMV 独自の時刻です。CNMV の開示フィードに提出書類が掲載されている場合はマドリード時間の分単位、そうでない場合は登録機関の公開日だけが記録されます。first_published_at と versions の動作は CMVM と同じです。
  • 発行体の対象範囲は、2023年以降に CNMV の開示フィードで年次財務報告書を提出したすべての発行体で、毎日読み取られます。
注意点 12 — filings.xbrl.org が更新を停止したため、ノルウェーの提出書類は Oslo Børs NewsWeb から取得します

filings.xbrl.org は2025-05-21にノルウェーの提出書類の追加を停止しました。FY2024のノルウェーの提出書類は220件、FY2025は0-2件です。Oslo Børs に上場する発行体はすべて、ESEF パッケージを添付した年次財務報告書をOslo Børs NewsWebの告知(カテゴリ 1001、ÅRSRAPPORT / ANNUAL FINANCIAL REPORT)として公開します。Equinor の FY2025 パッケージは2026-03-19に同所で添付されましたが、filings.xbrl.org には掲載されませんでした(フリート #2356)。

統合、LEI + 期末日による重複排除、鮮度に関する契約は、注意点 10/11 と同じです。

  • source は newsweb です。もう一方のコピーは also_on_xbrl_org / also_on_newsweb です。NewsWeb を参照したすべてのレスポンスには newsweb_status が含まれます(フィールドは cmvm_status と同じです)。
  • NewsWeb の提出書類 ID は newsweb-<messageId>-<attachmentId> です(例:Equinor FY2025 の newsweb-668785-321602)。viewer_url は告知ページ、published_at は告知時刻(UTC)です。
  • パッケージは告知の2つの言語版のうち片方にのみ添付されます。訂正は別の告知として掲載されます。バイト単位で同一の再添付は1つの行にまとめられます。同じ LEI + 期間に異なるパッケージ(訂正版のパッケージ、別の言語版)がある場合は、versions を含む1つの行になります。
  • LEI はインライン XBRL から取得し、添付ファイル名からは取得しません(添付ファイル名は発行体が決めます。例:eqnr-2025-12-31-1-nb.zip)。
  • カテゴリ 1001 には PDF のみの報告書(債券発行体、外国発行体)も含まれますが、これらはここには掲載されません。
GOTCHA 13 — スウェーデンのデータはFinansinspektionen(FI)から取得します

filings.xbrl.orgは2025-05-08にスウェーデンの取り込みを停止しました。最新のスウェーデンの行はその日に追加されており、FY2025のスウェーデンのレポートは0件です(FY2024は339件)。スウェーデンの発行体はすべて、年次報告書をESEFパッケージとともに、スウェーデンの公式指定メカニズムであるFinansinspektionenのBörsinformationデータベースに提出します(調査:docs/esef-freshness-survey.md Part 5)。

そのため、スウェーデンの提出書類もFIから取得し、GOTCHA 10-12と同じマージ、LEI+期間末日による重複排除、鮮度の契約を適用します。

  • sourceはfiです。もう一方のコピーにはalso_on_xbrl_org / also_on_fiが設定されます。FIを参照したすべてのレスポンスには**fi_status**が含まれます(cmvm_statusと同じフィールド)。
  • FIの提出書類IDはFIのファイルIDです:fi-61807(Ericsson FY2025)。published_atはFIの公表時刻で、分単位、ストックホルムのオフセットです。
  • 発行体がスウェーデン語版と英語版を提出する場合、1つのLEI+期間に対してFIパッケージが2つあります。これらは1つの行にまとめられ、英語版が提供され、両方がversionsの下に格納されます。
  • LEIはレポートのインラインXBRLから取得します(次にパッケージのルートフォルダー、その次にFIの発行体ページ)。ファイル名から取得することはありません。Volvoのパッケージ名はabvolvo-…です。
GOTCHA 14 — 会社名から誤った発行体が解決されることがあります

名前解決は最初にfilings.xbrl.orgで実行され、一致する名前のうち最も短いものが選ばれます。そこで"Ericsson"はERICSSON NIKOLA TESLA d.d.(クロアチア)に一致します。また、Telefonaktiebolaget LM EricssonのFY2025はFIのインデックスにしかないため、esef_filing_facts {entity:"Ericsson", year:2025}は以前、自信を持ってno_filing_for_yearを返していました(fleet #2372)。

esef_filing_factsが名前で解決し、選択された発行体にリクエストされたyearの提出書類がない場合、規制当局のインデックス(CMVM、CNMV、NewsWeb、FI、FSMA STORI、MSE、HANFA SRPI)を検索し、名前が一致し、該当する提出書類がある別の発行体を探します。

  • 1件だけの場合 → その発行体のレポートが使われ、resolved_byには、名前が最初に別の発行体と一致したことが示されます。
  • 複数の場合 → candidates(名前、国、LEI、ソース、filing_id)を含むreason: "ambiguous_entity"が返されます。このツールが推測することはありません。

誤った発行体にその年の提出書類がある場合は、この方法では解決できません。year: 2025を指定した"Santander"は、filings.xbrl.orgでBanco SantanderではなくSantander UK plcに解決されます。一般的な名前の場合はLEIを指定してください。

GOTCHA 15 — ベルギーのデータは2つの場所から取得します。FSMA STORIが不足分を補います

filings.xbrl.orgが扱うベルギーのデータは一部のみです。FY2025の提出書類は33の発行体から47件で、2026-05-12以降、ベルギーのデータは追加されていません。ベルギーの公式指定メカニズムであるFSMAのSTORIデータベースには、インラインXBRLのFY2025年次報告書を持つ発行体が106社登録されています。xbrl.orgの33社はすべてその中に含まれます(調査:docs/esef-freshness-survey.md Part 7、fleet #2405)。

GOTCHA 10-13と同じマージ、LEI+期間末日による重複排除、鮮度の契約を適用します。

  • sourceはfsmaです。もう一方のコピーにはalso_on_xbrl_org / also_on_fsmaが設定されます。STORIを参照したすべてのレスポンスには**fsma_status**が含まれます(cmvm_statusと同じフィールド)。
  • STORIの提出書類IDはSTORIのファイルIDです:fsma-5c08f790-404c-4121-bd0b-0cf3350455da(AB InBev FY2025)。published_atはSTORIに記録された発行体の公表時刻です(ブリュッセルのオフセット)。received_atはSTORIがレポートを受領した時刻で、数日後になることがよくあります(AB InBev FY2025:公表2026-02-12、受領2026-02-19)。national_identifierはKBO/BCEの会社番号です。
  • STORIにはレポートごとに最大3つの言語版(nl、fr、en)があり、そのうち1つを収集します。英語版が優先されます。発行体はパッケージを.zipまたは.xbri(Report Package 1.0)として提出します。少数ですが、.xhtml単体のみを提出する発行体もあり、その場合はそのまま変換されます。
  • インラインXBRLを含まない公表情報(証明書、ファンド、一部の非EU発行体などのPDFのみのもの)は行として登録されません。インデックスではpublications_without_inline_xbrlの下に一覧表示されます。
  • LEIはインラインXBRLから取得し、次にパッケージのルートフォルダー、その次にSTORIの掲載情報から取得します。ファイル名から取得することはありません(abinbev-2023-12-31-en (1).zip)。
注意点16 — 2025年度のマルタのデータは、マルタ証券取引所のOAMからのみ取得します

filings.xbrl.org は 2025-05-21にマルタの取り込みを停止しました。MTの2024年度は46件、2025年度は0件です。マルタ証券取引所はマルタの公式指定メカニズムを運営しており、年次報告書のお知らせには、発行者のESEF ZIPへのリンクが必ず掲載されています。過去12か月間に、92の発行者による2025年度のパッケージが97件ありました(2026-09-25時点で計測。調査:docs/esef-freshness-survey.md 第9部、フリート #2431)。

GOTCHA 10〜15と同じマージ、LEI+期末日による重複排除、および鮮度の契約です。

  • source は mse です。もう一方のコピーは also_on_xbrl_org / also_on_mse です。参照したすべてのレスポンスには mse_status が含まれます(cmvm_status と同じフィールド)。
  • MSEの提出書類IDはCDNフォルダー名で、銘柄コード、期末日、範囲、LEI、アップロード時刻が記されています:mse-BOV_20251231_CON_AFR_529900RWC8ZYB066JF16_20260326114707204(Bank of Vallettaの2025年度)。published_at はOAMのお知らせ時刻です(マルタのタイムゾーンオフセット)。
  • マルタの発行者の多くは社債を発行する金融会社で、会社単体の財務諸表を提出します。2025年度の97件のパッケージのうち41件が IND(report_scope: "individual")、残る56件が CON("consolidated")です。ESEFでタグ付けが義務付けられているのは、連結IFRS財務諸表のみです。計測対象の IND パッケージはすべて、タグ付けされていない通常のXHTMLです。これらの行は has_machine_readable_report: false として掲載され、esef_filing_facts に数値はありません。
  • 期末が12月ではない企業も多くあります(MaltaPostは9月30日、Farsonsは1月31日)。このパック内のどのデータでも同様に、year は期末日に基づいてフィルターします。
  • 取引所の利用規約では、「出典を明記し、素材を改変または歪曲しない」ことを条件に、誰でもファイルを保存して複製できます。行には出典を記載し、パッケージはダウンロードしたままの状態で保存しています。
注意点17 — クロアチアのデータはHANFA SRPIからのみ取得します

filings.xbrl.org は 2025-05-21にクロアチアの提出書類の追加を停止しました。HRの2024年度は30件、2025年度は0件です。クロアチアの公式指定メカニズムであるHANFAの SRPI は、2026年に77の発行者からESEFパッケージ付きの年次報告書を178件受領しました(調査:docs/esef-freshness-survey.md 第11部、フリート #2435)。

  • source は hanfa です。もう一方のコピーがある場合は、also_on_xbrl_org / also_on_hanfa です。SRPIを参照したすべてのレスポンスには hanfa_status が含まれます(cmvm_status と同じフィールド)。
  • SRPIの提出書類IDはSRPIの提出番号です:hanfa-1214588(Hrvatski Telekomの2025年度、英語、連結)。published_at はSRPIが提出書類を受領した時刻です(ザグレブのタイムゾーンオフセット)。
  • クロアチアの発行者は、連結パッケージと非連結パッケージを別々に提出し、それぞれが独立した提出書類です。クロアチア語版と英語版の両方が提出されることもよくあります。これらは report_scope(consolidated / individual)でラベル付けされた別々の行です。同じ範囲の言語別版は1行にまとめられ、英語版が提供され、すべて versions に含まれます。
  • 訂正は新しいSRPI提出書類として登録され、古い提出書類も掲載されたままになります。すべてのパッケージが保持され、LEI+期末日+範囲ごとに、変換済みの最新パッケージが提供されます。
  • ESEFパッケージを含まない提出書類(PDF、またはHANFA独自のXLSX「GFI」フォーム)は行として掲載されません。インデックスでは submissions_without_esef の下に記載されます。
  • 一覧の連絡先列(提出者が指定した連絡担当者の氏名、電話番号、メールアドレス)は、収集しません。
重要事項 18 — ハンガリーの情報源は MNB:filings.xbrl.org は 2025 年 5 月に更新を停止

filings.xbrl.org は 2025-05-21 にハンガリーの提出書類の追加を停止しました(HU FY2024 = 29 件、FY2025 = 0 件)。また、OTP Bank と Richter Gedeon の書類は一度も掲載されていません。すべての発行体は、ハンガリーの公式に指定されたメカニズムである MNB の Közzétételek サイト(kozzetetelek.mnb.hu)に ESEF パッケージを提出します(調査:docs/esef-freshness-survey.md Part 12、fleet #2437)。

GOTCHA 10-17 と同じ統合、LEI + 期間末日による重複排除、新しさの契約です。

  • source は mnb です。もう一方のコピーは also_on_xbrl_org / also_on_mnb です。MNB を参照したすべてのレスポンスには mnb_status が含まれます。
  • 提出書類 ID は MNB の文書 ID です:mnb-909016(OTP Bank FY2025、英語パッケージ)。published_at は MNB の公開日時(ブダペストの UTC オフセット)です。national_identifier は MNB の「Intézmény törzsszáma」企業番号であり、LEI ではありません。LEI はインライン XBRL、次にパッケージのルートフォルダー、最後に <LEI>-<period>-… ファイル名から取得されます。
  • 発行体は言語ごとに 1 つのパッケージ(…-en.zip、…-hu.zip)を添付します。収集されるのは 1 つで、英語が優先されます。開示に 2 つの報告書(個別と連結)が含まれる場合、それぞれ 1 行ずつになります。
  • パッケージと一緒に添付される ZIP の中には、PDF のみを含むもの(MOL の「その他の文書」)があります。これらは行には含まれず、publications_without_inline_xbrl に記載されます。
  • MNB の著作権表示では、変換を明記すれば無料での再利用が認められています。そのため、MNB の提出書類に含まれる esef_filing_facts には transformation の行があり、数値は発行体の iXBRL から変換したもので、MNB ではなく発行体に帰属することを示します。
重要事項 19 — リトアニアでは oam.lt と filings.xbrl.org を統合

filings.xbrl.org のリトアニア掲載は一部に限られています(FY2025:17 発行体、2026-05-12 以降の追加なし)。また、Ignitis Group は一度も掲載されていません。リトアニアの公式に指定されたメカニズムとして Nasdaq Vilnius が運営する規制情報の中央保管サイト oam.lt には、すべての発行体の年次報告書が掲載されています(調査:docs/esef-freshness-survey.md Part 13、fleet #2453)。LT の行は、LEI + 期間末日で両方の情報源を統合します。

  • source は oamlt です。もう一方のコピーは also_on_xbrl_org / also_on_oamlt です。oam.lt を参照したすべてのレスポンスには oamlt_status が含まれます。
  • 提出書類 ID は oamlt-<messageId>-<attachmentId> です:oamlt-468051-338788(Ignitis grupė FY2025)。published_at は発表日時(ビリニュスの UTC オフセット)です。
  • oam.lt 上の発行体名は Nasdaq の短縮名(「Ignitis grupe」)です。LEI はインライン XBRL からのみ取得されます。
  • 年次報告書の添付ファイルがすべて ESEF パッケージとは限りません。Ignitis はパッケージを ZIP 内の .7z に格納しており(展開済み)、多くの発行体は ASiC-E コンテナー(.asice)として電子署名し、Telia Lietuva はインライン XBRL を含まない XHTML のみを提出しています(publications_without_inline_xbrl に記載され、行には含まれません)。Amber Grid の FY2025 年次報告書は filings.xbrl.org に掲載されていますが、バックフィルで oam.lt から収集されたパッケージはありません(「Operating Results」のメッセージのみで、パッケージは含まれていません)。その行はインデックスから取得されます。
  • 訂正報告書は oam.lt の新しいメッセージとして登録されます。LEI + 期間ごとに、変換済みの最新パッケージが提供されます。
重要事項 20 — ルーマニアのFY2025データはASF OAMからのみ取得します

filings.xbrl.orgには、ルーマニアのFY2025提出書類はありませんでした。ASF OAM(oam.asfromania.ro)は、Autoritatea de Supraveghere Financiarăが運営するルーマニアの公式指定メカニズムで、すべての発行体の年次財務報告書(RFA)を掲載しています(調査:docs/esef-freshness-survey.md Part 15、fleet #2487)。ルーマニアの行は、LEIと期末日を基準に、xbrl.org上のコピーがあれば統合されます。

  • source は asf です。ASFを参照したすべての応答には asf_status が含まれます。提出書類IDは asf-<symbol>-<upload stamp> です。例:asf-SNP-20260319180945(OMV Petrom FY2025、連結)。published_at はアップロード時刻です(ブカレストのタイムゾーンオフセット)。
  • インラインXBRLを含むのは連結パッケージのみです。 単独(個別)報告書は、ix:タグのないプレーンなXHTMLです。事実データを含まない行として保持されます(has_machine_readable_report: false、report_scope: "individual")。発行体のLEIと期末日は、タグ付きパッケージから引き継がれます。esef_filing_facts はエンティティと年で検索するため、連結行が選ばれます。
  • report_scope は、発行体のアップロード時の注記に「consolidat…」または「individual…」と記載されている場合、その内容に基づきます。それ以外の場合、タグ付きパッケージは連結、タグなしパッケージは個別と判定されます(インデックス内の scope_source: "inferred_from_tagging")。
  • 発行体はルーマニア語版と英語版をアップロードし、修正版も新しいアップロード(「Corectare」)として提出します。これらはすべて1つの行の versions として扱われ、変換済みの最新バージョンが提供されます。
  • bvb.roからは取得しないでください。ブカレスト証券取引所にもパッケージが掲載されていますが、その利用規約では自動プログラムが禁止されています。
重要事項 21 — キプロスの最新報告書はキプロス証券取引所OAMからのみ取得します

filings.xbrl.orgでは、FY2022以降、キプロスの新規提出書類は追加されていません(34件、最新は2023-05-30)。publicoam.cse.com.cyは、キプロス証券取引所の公式指定メカニズムで、キー不要のJSON APIを通じてすべての発行体の年次財務報告書を掲載しています(調査:docs/esef-freshness-survey.md Part 15、fleet #2489)。

  • source は cse です。もう一方のコピーは also_on_xbrl_org / also_on_cse で示されます。CSEを参照したすべての応答には cse_status が含まれます。
  • 提出書類IDは cse-<listingVersionId>-<fileId> です。例:cse-222818-223858(Bank of Cyprus Holdings FY2025、英語版パッケージ)。published_at はOAMでの公開時刻です(ニコシアのタイムゾーンオフセット)。
  • 報告書とその翻訳版は、各々専用のパッケージ(…-el.zip、…-en.zip)を持つ2件のOAM告知として掲載されます。両方を収集し、パックはLEIと期末日でグループ化するため、一方は versions エントリーとして表示されます。
  • 年次報告書カテゴリには、取締役会の決定、株主総会の通知、PDFのみの決算結果も含まれます。また、一部の発行体(ESEFでタグ付けが義務付けられていない単一法人の会計書類)は、タグのないXHTMLファイルだけを含むZIPを提出します。該当するのはInterfundとDome InvestmentsのFY2025です。これらはいずれも行として登録されず、publications_without_inline_xbrl の下に一覧表示されます。
  • 上場APIの registryTimestamp パラメーターは実際に日付の下限として機能しますが、sort は何もせず、ページサイズが小さいと行が欠落します(500件ずつ取得した場合、3,592件中2,817件の異なる書類しか取得できませんでした)。収集ツールは2,000件ずつのページを取得し、取得件数が不足した場合は処理を拒否します。詳細:scripts/esef-cmvm/cse.py。
注意点 22 — FY2024 と FY2025 のラトビア情報は CSRI からのみ取得できます

filings.xbrl.org にはラトビアの提出書類が36件ありますが、FY2023 より新しいものはありません(最終追加日は 2024-07-09)。CSRI(csri.investinfo.lv)は、Latvijas Banka のために運営されている規制対象情報の中央保管機関であり、ラトビアの公式指定メカニズムです。現在の報告書は CSRI に掲載されています(調査:docs/esef-freshness-survey.md Part 15、fleet #2492)。LV の行は LEI と期間末日の両方で統合されるため、FY2023 以前の情報は引き続きインデックスから取得される場合があります。

  • source は csri です。もう一方のコピーは also_on_xbrl_org/also_on_csri です。CSRI を参照したすべてのレスポンスには csri_status が含まれます。
  • 提出書類 ID は csri-<docId>-<docVersion> です。例:csri-24777-1(Citadele banka FY2025)。published_at は配信されたドキュメントバージョンの日時です(リガのタイムゾーンオフセット)。再提出されたバージョンには新しい ID が割り当てられます。
  • すべての発表は EN と LV の2つのドキュメントとして提出され、それぞれ異なる ID が付いています。EN 版ですでにパッケージが取得されている場合、LV 版はスキップされます。別のドキュメントとして提出された、バイト単位で同一のパッケージは行としてではなく、duplicate_documents に記載されます。パッケージがラトビア語版しかない場合(Longo、AST FY2025)、行にはラトビア語の報告書が表示されます。
  • カテゴリー 1.1 にはプレスリリース、未監査の通期決算、日程の訂正も含まれています。また、複数の発行体がタグなしの XHTML を提出しています(Altum、Siguldas CMAS、Rīgas ūdens、PN Project の FY2025 個別財務諸表。単体財務諸表には ESEF のタグ付け要件がありません)。これらは publications_without_inline_xbrl に記載され、行は作成されません。
  • 発行体の LEI は CSRI の詳細ページに記載されています。行の LEI は引き続き、最初に inline XBRL から取得されます。
注意点 23 — ルクセンブルク、スロベニア、エストニアは常時ライブで照会され、ミラーリングされず、ファクトも含まれません

この3つの OAM の利用規約がその理由です。LuxSE では、情報の「配信、表示、販売、または頒布」の前に書面による同意が必要です(有料の Documents + Dissemination ライセンスで対応できます)。SEOnet は、書面による同意なしにデータを「いかなる形でも」商用利用または複製することを禁じています。エストニアの FSA は、報道および非営利利用を除き、サイト上の情報の複製または配布に事前の許可を求めています。3機関とも自動アクセスは禁止していません。CLAUDE.md の mirror-needs-grant-proxy-does-not ルール(fleet #1389)によれば、呼び出し元に代わってリクエストごとにライブで照会するのはクライアントであり、情報の提供元ではないため、許可は不要です。一方、保存したコピーの転売は、前述の他の規制当局がすべて採用している R2 ベースの方式であり、これらの規約が実際に制限している再配布に当たります。そのため、この3機関には意図的に OamSpec/R2 インデックスが一切設定されていません。すべての呼び出しで情報源にライブ照会し、プロセス内キャッシュに数分間だけ保持し、いかなるストアにも書き込みません。

常時ライブ照会でミラーリングされないことから、次のような影響があります。

  • 国別に固定されています。 esef_search_filings は、country が LU、SI、または EE の場合にのみ、この3つを試します。国を指定しない名称検索のたびに、さらに3つのライブ上流ソースへ問い合わせることはありません。esef_entity_filings は以前、解決されたすべてのエンティティについて、国にかかわらず3つすべてを試していましたが、#2573(GOTCHA 25)以降は、エンティティ自身の既知の国に一致する1つだけを呼び出します。国が本当に特定できない場合は、6つすべてを試す動作にフォールバックします。
  • ファクトはありません。 esef_filing_facts は、これらのESEFパッケージを開きません。設計上、変換済みのxBRL-JSONは存在しません。ライブ検索の fxo_id(luxoam-…、seonet-…、fi_ee-…)を渡すと、例外を投げたり推測したりせず、reason: "no_machine_readable_report" として処理を辞退し、その行の package_url/source_url を案内します。
  • ルクセンブルク(source: "luxoam"、luxoam_status):graphqlaz.luxse.com の oamSubmissionsSearch(deposit type 10001 = "Annual financial and audit reports")は、サーバー側で issuerName を受け付けるため、名前を指定した esef_entity_filings/esef_search_filings{entity_name} の呼び出しでは、広範な取得結果を後から絞り込むのではなく、上流で絞り込みます。ダウンロードトークン(oamSubmissionDetail → dl.luxse.com/dl?v=<token>)を取得するのは、名前を指定した少数の検索結果(≤10 rows)の場合に限られます。国別の広範な一覧では、行ごとに詳細呼び出しを行わないよう、取得しません。一覧にはLEIが含まれません(LEIはパッケージ内のインラインXBRLにのみ含まれますが、このパックはパッケージを開きません)。そのため、LUの行では entity_identifier がnullになります。
  • スロベニア(source: "seonet"、seonet_status):seonet.ljse.si のRSSフィード(doc_type_id:1020)は、max_results_special パラメーターにかかわらず、直近の年次/半期報告発表約20件に制限されています。これはライブ検索であり、全件一覧ではありません。発行者名はRSSの <author>/<category> フィールドから取得します。フィードには報告期間が記載されていないため、(スロベニア語の)発表タイトルにある4桁の年から period_end を推定し、period_end_inferred: true としてフラグを付けます。これは推測であり、ソースに記載された事実ではありません。同じ発行者で pubDate が同一のRSS項目2件(KrkaのSL/ENの組で、どちらも2026-04-09 06:15)は、異なるdoc idを持つ1件の提出書類なので、ダイアクリティカルマークのない(英語風の)タイトルを優先して1行にまとめます。1日以上後に発表された2件目(訂正や続報)はまとめられず、異なる綴りの法人名で提出された対応する xbrl.org/CMVM形式の行と、ほぼ重複しているように見えることがあります。SEOnetの一覧には重複排除に使えるLEIがないため、これはライブRSS検索の既知の許容済みの制約であり、これ以上追跡すべきバグではありません。
  • エストニア(source: "fi_ee"、fi_ee_status):oam.fi.ee の category=57("Majandusaasta aruanne")一覧には、発行者、タイトル、提出日が直接記載されています。LEIと期間終了日は、詳細ページの添付ファイル名(<LEI>-<period>-<lang>.zip)から直接読み取ります。パッケージ自体は開きません。詳細取得(LEI/パッケージリンク用)は、1回の呼び出しにつき最大8行に制限されています。
GOTCHA 24 — ギリシャとアイルランドはボットを禁止しているにもかかわらずライブ検索を行います。ブルガリアは必要だからではなく、一貫性のためにライブ検索を行います

GOTCHA 23とは異なるケースです。Euronext AthensとEuronext自身の利用規約は、複製を制限するだけでなく、「ボットその他の自動化された手法」、スクレイピング、クローラー、ディープリンクを全面的に明示して禁止しています。2026-09-25/28の調査(fleet #2434、#2493、および同様の手法によるアイルランドの調査)ではそこで作業を止め、どちらの国についても何も構築しませんでした。2026-09-30、Bruceはチャットでこれを覆し、「そちらもプロキシ経由にして」と指示しました。 この2か国については、いずれもリクエスト時に取得するライブ応答を返し、保存はせず、礼儀正しくクロールします(実在し連絡可能な User-Agent を使用し、IPローテーションも身元の偽装も行わず、リクエスト量を抑え、このパック内の他のライブソースがすでに使用しているプロセス内キャッシュのみを使用します)。いずれかのサイトが積極的にブロックし始めた場合(403/CAPTCHA/ボット用のブロック画面)、そのブロックを回避してはなりません。2026-09-30時点ではそうしたブロックはなく、試した礼儀正しいリクエストには両サイトともすべて応答しました。

  • 固定された国のみ。GOTCHA 23 と同様に、esef_search_filings は country が GR、IE、BG の場合にのみ、ギリシャ、アイルランド、ブルガリアを試します。以前の esef_entity_filings は、国に関係なく、解決されたエンティティすべてについて、6 つのライブソース(この GOTCHA の 3 つと GOTCHA 23 の 3 つ)すべてを試していました。GOTCHA 25 を参照:現在は一律ではなく、国で制限されています。
  • ファクトなし。GOTCHA 23 と同様に、ライブ検索で得た fxo_id(athex-…、oamie-…、beis-…)を esef_filing_facts に渡すと、reason: "no_machine_readable_report" を返して処理を辞退し、代わりに package_url/source_url を案内します。
  • ギリシャ(source: "athex"、athex_status):athens.euronext.com/en/market-data/financial-data。キー不要のサーバー側でレンダリングされるページです(サイトの汎用「announcements」検索とは異なります。そちらは、ライブで調査した際にテキストまたは会社 ID のフィルターが適用されなかった Drupal Views AJAX エンドポイント経由でしか行を返さないため、このエンドポイントは使用しません)。field_mig_category=2 は「Financial Statements ESEF」を選択し、field_mig_category_1=2 は「Twelve months」を選択します。ライブで検証した結果、行のタイトルは (<year>,Annual report,<Consolidated|Parent>) または (<year>,Year Statement,<scope>) で、どちらも年次報告書です。名前を指定した検索では、このページ独自の発行体オプション一覧(field_mig_category_3。このサイト固有の数値 ID であり、LEI やティッカーではありません)を使って呼び出し元の名前を照合します。これは結果セットではなく企業ディレクトリであるため、プロセス内で 6 時間キャッシュされます。名前がディレクトリと一致しない場合は、フィルターを適用していないページ上の各行の発行体名との照合にフォールバックします。掲載情報にあるのは報告対象の年のみで、正確な期末日は示されていないため、period_end は <year>-12-31 とし、period_end_inferred: true を設定します(GOTCHA 23 がスロベニアに対して行うのと同じ暦年を会計年度とみなす前提です)。LEI も記載されていないため、entity_identifier は null です。行 ID は ZIP 自体のダウンロードパスから取得した UUID です(タイトルのリンクは、行によって Drupal のノード ID またはスラッグ形式のパスのいずれかに不統一に変わるため、どちらも ID には使用しません)。
  • アイルランド(source: "oamie"、oamie_status):direct.euronext.com/api/PublicAnnouncements/OAMs への JSON POST です。direct.euronext.com の大半は Euronext の B2C ログインの背後にあります(独自の /api/gate/configuration.js で確認済み)。このエンドポイントへのヘッダーなしの POST は 401 になりますが、ブラウザーが送信するものと同じ Origin/Referer の組み合わせを付けた同じ POST には、実際の最新のアイルランド規制対象発表が 200 で返ります。これは CORS の確認であり、認証ではありません。本文:{startDate, endDate, page, companyName, firstLetter}。companyName はサーバー側で絞り込みを行い、形状はルクセンブルクの issuerName と同じです。行はクライアント側で regulatoryCategory === "Annualfinancialandauditreports" に絞り込みます。サーバー側のカテゴリーフィルターは公開されていません。period_end は意図的に null のままにします。ギリシャやスロベニアとは異なり、アイルランドの会計年度末は発行体によって異なります(Ryanair は 12 月 31 日ではなく 3 月 31 日です)。そのため、見出しから <year>-12-31 と推定すると、単に不正確なのではなく、実際によくあるケースで明確に誤った値になります。ダウンロード URL(api/PublicAnnouncements/OAMDocument/<name>?id=<id>)にも、同じ Origin/Referer ヘッダーが必要です。
  • ブルガリア(source: "beis"、beis_status):BEIS(beis.bia-bg.com)は、ブルガリアの発行体が情報開示に使う 3 つのエージェントのうちの 1 つです(調査 #2493)。他の 2 つ(x3news と infostock.bg)は自動アクセスを禁止しており、呼び出されることはありませんが、BEIS の利用規約は出典の明記のみを求めているため、特例措置は不要でした。公開フィード(index.php?p=publicinfo)は、対象とするすべての発行体のあらゆる種類の発表が混在する、絞り込みのない単一の長いページです。このパックはそのページを取得して(プロセス内でキャッシュします)、発行体と ESEF パッケージの両方を独自に見つけます。フィードには、どちらについてもサーバー側フィルターが公開されていないためです。ESEF 年次パッケージのファイル名は、ティッカーの接頭辞が LEI の前に付いていても、必ず <20-char LEI>-<YYYYMMDD>-BG-<CON|SEP>.<zip|xhtml> で終わります(BEIS が実際に使用する 3 種類すべてのファイル名パターンで確認済みです)。.p7m が付いたファイルは、報告書ではなく別途署名されたラッパーであるため、スキップされます。意図的に対象範囲を限定しています。BEIS をエージェントとして使っている発行体は約 3 社(Vipom AD - Vidin、KMM AD - Shumen、Nash Dom / HDOM)のみです。そのため、ブルガリアの ESEF 提出企業の大半はここには表示されません。beis_status の注記では、この情報源を参照するすべての応答でその旨を伝えます。
GOTCHA 25 — esef_entity_filings は、企業の国が実際に対象となり得る場合にのみライブソースを呼び出します

Fleet #2573。#2549 および #2571 に続く変更です。これまでは、esef_entity_filings は解決済みのエンティティすべてに対して、実際の所在国に関係なく、GOTCHA 23 + 24 の6つのライブソース(LU、SI、EE、GR、IE、BG)を並列で呼び出していました。フィンランドの検索でも、アテネやダブリンなどにバックグラウンドリクエストが送信されていました。これはまさに、CLAUDE.md の mirror-needs-grant-proxy-does-not の考え方が、低頻度かつリクエスト単位での実行に依存し、一律の実行を避けるべき種類の負荷です。

6つのソースはそれぞれ、呼び出す前にエンティティ自身の既知の国によって制限されるようになりました。

  • エンティティが filings.xbrl.org または R2 ミラーリングされた OAM で解決される場合(GOTCHA 23/24 自体には R2 インデックスがありませんが、このパックのその他すべての国にはあります)、国は取得したばかりの行にすでに含まれています。xbrlRows には提出書類自身の country 属性が含まれ、oamRows には OAM 固有の国が含まれます。一致する国のライブソースがある場合、そのソースだけが呼び出されます。フィンランド、スペイン、ノルウェーなどのエンティティでは、6つのソースはいずれも呼び出されません。
  • entity に ISIN が渡された場合(国を示す2文字のプレフィックス + 9桁の英数字 + チェックデジット)も、同じように国のヒントとして読み取られ、解決前でも適用されます。IE00BWT6H894 はアイルランドに直接制限されます。
  • 本当に国が不明な場合は、引き続き6つすべてへのフォールバックとなります。どこにも解決されない一般的な会社名(filings.xbrl.org との一致なし、OAM との一致なし、ISIN 形式でもない)の場合、名前を使ってすべてのライブソースを引き続き試します。これが、アイルランドまたはブルガリアにしか存在しない企業(filings.xbrl.org にはなく、R2 OAM もない)にアクセス可能な唯一の方法です(この動作は #2571 の修正によって維持されます)。
  • 呼び出されなかった各ソースにも、常にステータスブロックが返されます。内容は available: false, skipped: true, reason: "not_applicable" です。これにより、呼び出し元は、たとえばアイルランドを検索して結果が空だったのではなく、oamie_status がスキップされたことを確認できます。

データソース

  • インデックス:https://filings.xbrl.org/api/filings(JSON:API、ヘッダー Accept: application/vnd.api+json)
  • エンティティ:https://filings.xbrl.org/api/entities、…/api/entities/<identifier>/filings
  • レポート:ルート相対の json_url を https://filings.xbrl.org を基準に解決 — xBRL-JSON(OIM)、{documentInfo, facts}、通常 500 KB~1 MB
  • ポルトガル:CMVM 年次財務諸表の開示(https://www.cmvm.pt)、各発行体が公開する ESEF パッケージ、ファクトは同じ xBRL-JSON 形式
  • スペイン:CNMV 年次財務報告書登録簿(https://www.cnmv.es/portal/consultas/ifa/listadoifa.aspx?id=0&nif=<NIF>)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_cnmv.py)
  • ノルウェー:Oslo Børs NewsWeb の年次報告書発表(https://api3.oslosbors.no/v1/newsreader/list?category=1001、認証キー不要)、各発行体が添付する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_newsweb.py)
  • スウェーデン:Finansinspektionen Börsinformation(https://finanscentralen.fi.se/search/SearchByRegistrationDate.aspx、ファイル GetFile.aspx?fid=<N>)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_fi.py)
  • ベルギー:FSMA STORI(https://webapi.fsma.be/api/v1/en/stori/result、認証キー不要の JSON、ファイル …/stori/download?fileDataId=<uuid>)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_fsma.py)
  • マルタ:Malta Stock Exchange の Officially Appointed Mechanism(名称のみ記載し、リンクなし:取引所の利用規約により、書面による許可なく同サイトへのリンクは禁止されています)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_mse.py)。同じ理由により、マルタの行には source_url / viewer_url がありません。
  • クロアチア:HANFA SRPI(https://www.hanfa.hr/Api/SRPI/GetData、認証キー不要のフォーム POST、ファイル https://www.hanfa.hr/SRPI/<HR|EN>/<year>/<date>-<id>_zip.zip)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_hanfa.py)。HANFA は、クロアチアの情報アクセス権法に基づき、すべての利用者が商用・非商用の目的で情報を再利用できるとしています。
  • ハンガリー:MNB Közzétételek(https://kozzetetelek.mnb.hu/search/advanced、HTML フォーム、表示 …/kozzetetelek?viewid=K<n>/<year>、ファイル …/downloadkozzetetel?id=<n>&did=K<n>/<year>)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_mnb.py)
  • リトアニア:oam.lt、Nasdaq Vilnius が運営するリトアニアの OAM(https://oam.lt/、HTML フォーム POST、カテゴリー 171 = 年次財務報告書、メッセージ /view/<messageId>、ファイル /cns-web/oam/viewAttachment.action?messageAttachmentId=<N>)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_oamlt.py)
  • ルーマニア:ASF OAM(https://oam.asfromania.ro/oam/loadedPDFReportsForPublic.jsp、フィルターがセッションに保存されるレポートエンジン:RFA タイプ 1267 + 公開日の期間、各行のアップロード先 participants/loadedPDFReportsVersions.jsp、ファイル /oam/DownloadPDFFile.do?nume_raportare=<name>)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_asf.py)
  • キプロス:Cyprus Stock Exchange の公開 OAM(https://publicoam.cse.com.cy/xak-public-pages-server/api/fetch-listing-versions?informationCategoryId=16&registryTimestamp=<YYYY-MM-DD>、認証キー不要の JSON、ファイルは …/fetch-files?listingVersionId=<id> からインラインで Base64 形式で取得)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_cse.py)
  • ラトビア:CSRI、Latvijas Banka 向けに運営されるラトビアの OAM(https://csri.investinfo.lv/en/?view=csridocuments&doc_types[]=111、認証キー不要の GET、1 ページあたり 20 行、詳細 ?view=csridocumentsdetails&id=<docId>、ファイル /?task=download&doc_id=<docId>&doc_version=<v>&f_id=<fileId>)、各発行体が公開する ESEF パッケージ、同じ方法で変換(scripts/esef-cmvm/collect_csri.py)
  • ルクセンブルク(ライブ、GOTCHA 23):LuxSE OAM(https://graphqlaz.luxse.com/v1/graphql、認証キー不要の GraphQL、oamSubmissionsSearch/oamSubmissionDetail、ダウンロード https://dl.luxse.com/dl?v=<token>)— リクエストごとに取得し、ミラーは作成しません
  • スロベニア(ライブ、GOTCHA 23):SEOnet(https://seonet.ljse.si/rss/default.aspx?...doc_type_id:1020...、認証キー不要の RSS、約 20 件に制限)— リクエストごとに取得し、ミラーは作成しません
  • エストニア(ライブ、GOTCHA 23):FSA の OAM(https://oam.fi.ee/et/borsiteated?category=57、認証キー不要の HTML 一覧、詳細ページには LEI 名の添付ファイルがあります)— リクエストごとに取得し、ミラーは作成しません
  • ギリシャ(ライブ、GOTCHA 24):Euronext Athens(https://athens.euronext.com/en/market-data/financial-data、認証キー不要、サーバー側でレンダリング)— サイトの利用規約でボットが禁止されているにもかかわらず、リクエストごとに取得し、ミラーは作成しません(Bruce、2026-09-30)
  • アイルランド(ライブ、GOTCHA 24):Euronext Dublin OAM(https://direct.euronext.com/api/PublicAnnouncements/OAMs、Origin/Referer の組み合わせを使う認証キー不要の JSON POST)— Euronext の利用規約でボットが禁止されているにもかかわらず、リクエストごとに取得し、ミラーは作成しません(Bruce、2026-09-30)
  • ブルガリア(ライブ、GOTCHA 24):BEIS(http://beis.bia-bg.com/index.php?p=publicinfo、認証キー不要の HTML フィード、ファイルは /pubinfo/ 以下)— リクエストごとに取得し、ミラーは作成しません

クイックスタート

MCP クライアント(Claude Desktop、Cursor、Windsurf など)に追加します:

{
  "mcpServers": {
    "esef-filings": {
      "url": "https://gateway.pipeworx.io/esef-filings/mcp"
    }
  }
}
このエンドポイントが実際に提供するもの

https://gateway.pipeworx.io/esef-filings/mcp の tools/list は、上記の表にあるツールに加えて、Pipeworx 共通のメタツール(ask_pipeworx、discover_tools、search_within、remember/recall など、ゲートウェイ全体で使えるツール群)を返します。そのため、表示されるツール数はこの表より多くなります。現在、単一パックのエンドポイントには、そのパック固有のツールとともに、およそ30個の共通ツールが表示されます。接続の initialize 応答に正確な対象範囲が示されるため、その日の状況を確認する際の信頼できる情報源となります。

これは意図的な設計であり、意図せず多重化されているわけではありません。メタツールを使えば、このパックが対象としていない質問にも、カタログ全体を検索する ask_pipeworx を通じて回答できます。そのため、2つ目の MCP サーバーを追加する必要はありません。現時点では、メタツールなしでパックのエンドポイントを利用する方法はありません。追加のスキーマが増えるコンテキストコストに見合うほどルーティング機能を活用できない場合は、複数のパックエンドポイントではなく、フルゲートウェイに一度だけ接続してください。

または、Pipeworx のフルゲートウェイに接続すれば、このパックのツールだけでなく、各パックのツールがすべて直接表示されます:

{
  "mcpServers": {
    "pipeworx": {
      "url": "https://gateway.pipeworx.io/mcp"
    }
  }
}

どちらの URL も、同じゲートウェイと同じ1879以上のデータソースに接続します。違いは、どのパックのツールが直接表示されるかだけです。どちらの URL からも、ask_pipeworx を通じてすべてのツールを利用できます。

MCP クライアントがない場合:HTTP 経由で呼び出す

curl -X POST https://gateway.pipeworx.io/v1/tools/esef_search_filings \
  -H 'Content-Type: application/json' \
  -d '{"entity_name":"Citycon","country":"FI"}'

最初の呼び出しにアカウントは不要です。任意のツールを確認するには、GET https://gateway.pipeworx.io/v1/tools/esef_search_filings を実行します。ツールを見つけるには、{"query":"..."} を指定して POST https://gateway.pipeworx.io/v1/tools/search_packs を実行します。

単体利用(ゲートウェイアカウント不要)

このパッケージは、ローカルの stdio MCP サーバーとしても動作します。Pipeworx アカウントも、ゲートウェイを経由する処理も不要です:

{
  "mcpServers": {
    "esef-filings": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-esef-filings"]
    }
  }
}

または、直接実行して起動を確認します:

npx -y @pipeworx/mcp-esef-filings

stdin/stdout 経由で MCP を使用し、initialize/tools/list/tools/call に対して、このパックのツールのみを返します。上記のゲートウェイ接続で追加される共通メタツールは含まれません。同じソース、同じツールを利用できますが、ask_pipeworx によるルーティングはありません。

ask_pipeworx の使用

ツールを直接呼び出す代わりに、自然な英語で質問できます。これは上記のパックエンドポイントとフルゲートウェイの両方で利用できます:

ask_pipeworx({ question: "your question about Esef Filings data" })

ゲートウェイが適切なツールを選択し、引数を自動的に設定します。

詳細

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。