PeppolStatus

com.peppolstatus由 peppolstatus.com 發布官方發布者v1.0.0更新於 Oct 24, 2026

Peppol market intelligence and network monitoring: migrations, provider churn, leads, and uptime.

已驗證Streamable HTTP可網頁執行安全與監控資料與分析商業與電商

概覽

AI 產生的概覽

以唯讀方式取得 Peppol 網路情報:主機可用性、事件、服務商、參與方、存取點及軟體市場資料。

可以做什麼
提供涵蓋 Peppol 電子發票網路資料的大型唯讀介面。工具包含受監控主機的狀態、延遲與可用率,事件流,服務商與存取點目錄及其 SLA 評分和憑證狀況,參與方記錄、變更事件與實測可用性,以及採用率、流失與集中度等網路層級統計。軟體庫與軟體格局檢視可顯示網路使用的引擎。
適用情境
適合在需要查看 Peppol 服務商或存取點健康狀況、調查事件或查詢 SLA 歷史、查找參與方的註冊資訊與端點,或分析採用率、流失與市占率趨勢而不想自行呼叫底層 API 時使用。
執行需求
位於 mcp.peppolstatus.com 的遠端 streamable HTTP 端點;未宣告套件、環境變數或標頭。部分工具說明無需 API 金鑰即可存取,暗示其他工具可能需要金鑰。
安裝前請注意
多數工具為唯讀查詢,但部分被描述為免費或免金鑰的子集,完整資料可能有存取限制或需要憑證。結果包含第三方企業與憑證資訊,使用前請確認合規範圍。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 PeppolStatus,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.peppolstatus%2Fapi/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "peppolstatus": {
      "type": "http",
      "url": "https://mcp.peppolstatus.com/"
    }
  }
}

工具

65

list_hosts

List monitored hosts Every monitored host with its current verdict, latest hourly all-locations latency and 24h uptime, worst-first, plus a network-wide rollup.

無需輸入參數。

get_host

Get a host's current state Current role, verdict, network attribution (IPs/PTR), TLS certificate and operating provider for a host. `?at=` returns point-in-time state. `profile` carries the crawled software identity of the host's registrable domain when one is publishable (curated, or extraction confidence 0.8+ — then unverified).

輸入參數athostname必填

list_host_incidents

List a host's incidents Incidents for one host, newest-first, cursor-paginated.

輸入參數limitsincecursorstatushostname必填

get_host_uptime

Get a host's uptime aggregates The aggregate ladder for a host at a chosen resolution, per-location plus the `__all__` rollup, optionally windowed by `[from, to)`, cursor-paginated.

輸入參數tofromlimitcursorhostname必填locationresolution

list_incidents

List incidents The global incident feed, newest-first, cursor-paginated.

輸入參數hostlimitsincecursorstatus

get_participant

Get a participant's current state Directory presence, SML registration + current SMP, business card, the company-register enrichment block, endpoints and serving seats for a Peppol participant. Discovered participants carry no card; unmatched participants carry company: null.

輸入參數id必填

list_participant_events

List a participant's change events The participant's typed change events, newest-first, cursor-paginated.

輸入參數id必填limitcursor

get_participant_history

List a participant's temporal history The participant's temporal rows across the directory/card/registration/SMP fact families, newest-first, cursor-paginated.

輸入參數id必填limitcursor

get_participant_availability

Get a participant's measured availability The real, probe-measured reachability of one Peppol ID over time. Two lanes — the participant's SMP host (discovery) and its Access Point host(s) (delivery) — are read from the uptime ladder and merged per bucket into one verdict (available | degraded | unreachable | no_data): an AP with any down check is unreachable; an AP up/degraded with the SMP down is degraded (discovery impaired, still deliverable); both lanes up is available. Returns per-lane `UptimeBucket` ladders, the worst-of combined lane, 30/90-day + full headline uptime (degraded counts as available), a monthly 99.5% Peppol AP service-level TARGET (never a contractual claim), host-change markers and window-overlapping incidents. `daily` spans the full history; `hourly` covers the last 90 days. Buckets before the 2026-08-02 AP epoch carry partial AP attribution (`pre_epoch`).

輸入參數id必填tofromresolution

get_network_summary

Get the network summary Current host verdict counts, open incidents and anomalies in the last 24h, plus how fresh the Peppol Directory export behind every other endpoint is.

無需輸入參數。

get_network_history

Get the network verdict history The host verdict mix over time, derived from the temporal verdict table in one windowed pass: per UTC day, the rows open at 00:00 that day, counted by verdict. Two caveats. Counts are (hostname, role) pairs — a host serving two roles counts twice, the same grain as `/v1/network`. And before 2026-08-15 an unresolvable host was recorded as `down`, so `unresolvable` reads 0 over the earlier stretch. The series starts 2026-07-21, the first day the table covers; an earlier `from` is clamped to it. Keyless-cacheable.

輸入參數tofrom

get_network_stats

Get the network-level statistics How the whole network moves: Movers (AP) and Movers (SMP), Cross-border moves, Bulk moves, Joiners, Leavers and Net growth, the Leaver rate (annualized), Concentration (AP) and Concentration (SMP) (HHI, top 5, top 10), Concentration per country, Foreign-served participants and penetration. Each flow statistic gives its count over the last 7 and 30 days, the 7-day mean and the change against the period before. Every rate is of the registered-participant count at the START of its period (`base`, the end of `base_day`) and is returned beside its absolute count. A day with no completed change scan is a gap: `gap_days` counts them, and moves found after a gap are counted on the next scan day. A 7-day mean is the mean over the scanned days of its window; a gap day is in neither the sum nor the divisor, and a window of gap days only has no mean (null). The series starts 2026-08-02; a window that would open earlier is clamped to it. `as_of` is the last complete UTC day and every flow period ends there. Concentration, Foreign-served participants and penetration are snapshots: each is the latest stored value and carries its own `day`, which can be one day after `as_of`. `concentration_by_country` gives, per country, how the Peppol IDs of that country are shared over the providers that serve it: the HHI, the effective number of providers (10000 / HHI), the largest provider with its share, the top-4 and top-10 shares and the number of providers above 1%. The basis is the provider rosters (certificate seats); Vendors are not counted. Only a country with 8 or more providers is returned. The headline numbers are free. The organic/bulk split, the cross-border split, the bulk share, penetration and the 30-day trends are returned for a Market key only (see `x-required-tier` on the fields); the body is private to the caller.

無需輸入參數。

get_network_stats_history

Get one network-level statistic as a daily series One point for every UTC day of the window. `stat` is required. A flow statistic (`ap_switching` = Movers (AP), `cross_border` = Cross-border moves, `smp_switching` = Movers (SMP), `growth` = Net growth with Joiners and Leavers) carries per day its counts (`values`), the registered-participant count at the start of the day (`base`), the first key as a percentage of that base (`pct`) and its 7-day mean (`mean_7d`). For `cross_border`, `base` is all AP moves of the day and `pct` is the cross-border share of them. A day with no completed change scan has `gap: true` and `values: null` — a gap is never 0. The 7-day mean is the mean over the scanned days of `day − 6 .. day`: a gap day is in neither the sum nor the divisor, and the mean is null when all are gaps. It is the same figure as `trend_30d` of `/v1/network/stats`. For `growth`, a gap day keeps `joiners` and nulls `leavers` and `net`. A stock statistic (`concentration_ap` = Concentration (AP), `concentration_ap_country` = Concentration per country, `concentration_smp` = Concentration (SMP), `foreign_served` = Foreign-served participants, `penetration`) carries `values`, null on a day with no snapshot; `foreign_served` also carries `base`, the registered participants of that day. `concentration_ap`, `concentration_ap_country`, `foreign_served` and `penetration` have no history before their first snapshot. A day with no snapshot is absent, not 0. The series starts 2026-08-02.

輸入參數tofromstat

get_summary

Get the public dashboard summary The free marketing-dashboard rollup: the network-wide host rollup (fleet count + mean uptime/latency), the hourly fleet-average p50 latency trend over the last 24h, and the top-10 providers by market share (0..1 fraction). No host list, full registry or arbitrary per-host uptime is exposed.

無需輸入參數。

get_adoption

Get a country's adoption aggregates Peppol adoption for one country as one bare object: headline totals (universe, on_peppol, penetration), the single-dimension cuts (sector with a NACE Rev. 2.1 section rollup (A–V), region, FR-only département, size class (FR and NO), BE-only province + postcode + mandate scope, legal-form family, and company age), the same categorical cuts cross-tabbed by company-age band (`cuts_by_age`), and the trend (monthly new adopters plus per-run penetration history). Region cells carry ISO 3166-2 (BE, NO, SK) / INSEE région (FR) codes and sector cells the NACE Rev. 2.1 division code, so the choropleth joins geometry with no string matching. Numerator cells below 10 matched companies are suppressed (`on_peppol`/`penetration` null, `suppressed` true); denominators are never suppressed. Cached for a day (data moves monthly).

輸入參數country必填

list_providers

List providers The OpenPeppol member registry with role flags, country, mapped hostnames and per-provider participant counts (market share), busiest first. Not paginated (the envelope's `next_cursor` is always null).

無需輸入參數。

get_provider

Get a curated provider A curated provider navigable to its seats and each seat's observed hosts.

輸入參數slug必填

list_public_providers

List public provider profiles The FREE, crawlable public subset for each curated provider, busiest first: identity + role flags, the seat-directory columns (legal entity, commercial name, website, infra provider, hosting), mapped hostnames, participant count, roster country mix, the 30d/90d uptime headline, a cert-health summary and an `as_of` freshness stamp. Reachable with no API key. `limit` clamps to [1, 500] (default 100). Not paginated (the envelope's `next_cursor` is always null).

輸入參數limit

get_public_provider

Get a public provider profile The FREE, crawlable public subset for one curated provider (same shape as a `GET /v1/providers/public` item). Reachable with no API key.

輸入參數slug必填

get_provider_sla

List provider SLA scorecards Per-provider SLA scorecards for one trailing period: checks-weighted uptime across each provider's mapped hosts, incident count, total downtime minutes and the single worst host. Ordered worst uptime first (providers with no checks in the window last). Materialized hourly by the batch runner. Not paginated (the envelope's `next_cursor` is always null).

輸入參數period

get_provider_sla_by_key

Get a provider's SLA scorecards One provider's SLA scorecards, one per trailing period (30d and 90d). `key` is the provider's natural key (as reported by `GET /v1/providers`). Empty `items` when the provider has no SLA data yet.

輸入參數key必填

list_provider_certs

Get a provider's certificate posture A curated provider's whole-fleet certificate posture in one call: per-Seat cert counts, soonest expiry, expired / expiring-within-30-days counts, observed cert organisations and last identity shift, plus the rolled-up fleet summary.

輸入參數slug必填

list_access_points

List access points The Access Point directory: every Provider in its serving role, with its member seats and roster size (current participant count), busiest first. A Provider is resolved from each seat with the precedence curated mapping (verified) → exact signing-cert `O=` string (unverified) → bare SeatID. Not paginated (the envelope's `next_cursor` is always null). Pass `?country=CC` to compare providers within one market instead of network-wide. Every item carries the windowed net growth; a MARKET-tier key additionally gets the four churn components behind each net (`joiners`, `movers_in`, `movers_out`, `leavers` × 7d/30d/90d), which a lower-tier key simply does not receive. `kind` selects the row kinds. The default is `provider`, and the list is then Provider rows only. A Vendor is a curated software or service brand that connects its customers through the Seats of one or more Providers; `kind=vendor` returns the Vendor rows and `kind=all` returns both, each item marked by `kind`. A Vendor's participants are always also in the count of the Provider that serves them: never add Provider rows and Vendor rows into one total, share or rank.

輸入參數kindcountry

get_access_point

Get an access point One Provider's detail: display name, verified flag, member seats (each with its embedded provider or unverified cert-CN), roster size, and the country + document-scheme composition of its roster. A request for a STALE key (a seat since curated, so its old unverified key left the directory) resolves to the current Provider; the returned `key` is always the canonical current one. `software` groups the Provider's sighted hosts by registrable domain with the crawled identity of each, and `hostname_count` / `smp_hostname_count` give the true totals behind the capped `hostnames` / `smp_hostnames` samples. `smp_tenants` lists the Access Points (seats) that serve the participants on this Provider's SMP hosts — on a multi-tenant SMP most of the hosted footprint belongs to other APs — with `smp_tenant_count` / `smp_tenant_other` / `smp_tenant_no_ap` so the rows add up to `hosted_participant_count` (both come from the same rollup run); `smp_hosted_by` is the reverse: other providers' SMPs that carry this AP's participants. Each `sub_providers` bucket names its Vendor (`name`) and links to the Vendor's row (`vendor_key`). A Vendor key (`v-<slug>`) returns the Vendor detail instead and needs a Market-tier key: the Providers it connects through (`via`), its participants and Companies, the signals that back the row, and the composition of its roster. A Vendor has no Seats, no certificate and no hosts of its own.

輸入參數key必填

get_access_point_roster_mix

Get a filtered access point roster breakdown The five roster breakdowns of `GET /v1/aps/{key}` (country, entity type, NACE Rev. 2.1 division, size class, region) recomputed over a FILTERED slice of the roster, so a breakdown stays true while the roster is cut down. The filters are the same names and shapes as `GET /v1/participants`, scoped to this provider's seats. BOUNDED BY DESIGN. The breakdowns are computed only when the filtered slice is narrow (under an internal cap of 10,000 participants). A request that narrows on nothing, that carries a filter this endpoint cannot express (`doctype`, `transport_profile`, `q`, `host`, `sub_provider`, `postcode`, `provenance`, `vat_liable`), or whose slice is too wide answers `degraded: true` with every mix null — never a wrong number and never an error. Callers fall back to the stored whole-roster mixes on `GET /v1/aps/{key}`. Counts are sparse the same way the stored mixes are: company enrichment covers a handful of registers, so every mix except `country_mix` sums BELOW `participant_count` and the un-enriched remainder is derived from the total rather than served as a bucket. A Vendor key (`v-<slug>`) answers the same question over the Vendor's roster and needs a Market-tier key. `seat` then selects one Seat the Vendor connects through.

輸入參數key必填smpseatsizeregionschemesectorcountrynot_sizenot_regionnot_sectorregistered另有 3 個

get_access_point_churn

Get an access point's churn An Access Point's joiner / mover / leaver activity over a period: a daily category series with derived net growth, period totals, and the 'won from / lost to' counterpart breakdown. Joiners are first-ever serving seats (from 2026-08-02 onward, first-full-deep-sweep completion); movers change Provider (both sides resolved to the current identity); leavers deregister while served. Defaults to the trailing 30 days. A Vendor key (`v-<slug>`) returns the same shape for the Vendor, from a daily comparison of its membership. Movement is counted from `churn_since`; there is no history before it. A counterpart is a Provider or another Vendor (`kind`). `match_totals` and the `newly_matched` / `no_longer_matched` series count membership changes with no real event behind them (a signal appeared or disappeared): they are a data-quality figure, not movement, and are never in `net_growth`. For a Provider key, `counterpart_flow` gives each mover side (out, in) its top counterpart with its share and the effective number of counterparts, over the requested period. The share is null under 25 movers on that side and the effective number under 100. A Vendor key has no `counterpart_flow`. PLATFORM MOVES. A mover is a platform move when the platform that serves the participant stayed and only the certificate Seat changed: it is not a customer decision. The verdict is per DIRECTED provider pair (from → to), over all its movers since 2026-08-02, with one of two reasons (`same_host`, `sub_provider`): at least 90% of the movers whose endpoint host can be compared (5 or more, and at least 50% of all movers of the pair) kept their endpoint host, or at least 90% of 25 or more movers still carry, at the new provider, the sub-provider brand of the provider they left. It is a CURRENT judgment, computed again on every rollup cycle. For a Provider key, the movers of a platform-move pair are in `platform_won` / `platform_lost` of the counterpart and not in its `won` / `

輸入參數tokey必填from

list_access_point_churn_participants

List participants behind a churn category The drill-down: the participant IDs behind one churn category count for this Provider over the period, newest observation day first. `counterpart` narrows a mover category to the participants won from or lost to one Provider. Cursor-paginated in pages of at most 500: follow `next_cursor` until it is null. A Vendor key (`v-<slug>`) lists the Vendor's events, also accepts `newly_matched` and `no_longer_matched`, and adds `counterpart_kind` to each item. `category` takes a comma list, or `net` for the four net-growth categories: the items come in the order joiner, mover_in, mover_out, leaver (then newly_matched, no_longer_matched), each category newest day first, and every item names its `category`. `day` is the short form of `from` = `to` = that day. The counts are of participant IDs, not companies: group on `company_key` to count companies.

輸入參數todaykey必填fromlimitcursorcategory必填counterpart

list_smps

List SMPs The SMP directory: every current SMP hostname with the seat(s) and provider that sign its metadata, busiest first. A hostname is listed if it currently homes participants (from the participant rollup's `smp` facet) or carries an open `smp-signing` certificate. `participant_count` comes from that bounded top-N facet, so a hostname with a signing cert but outside the top-N carries a null count (unknown), not zero. The provider is resolved from the most-recent open signing cert with the precedence curated mapping (verified) → unverified cert-CN — the same as `/v1/aps`. `provider` is who OPERATES the host; `owner` names the party the curated registry says OWNS it, and is set only when that is a different party (a shared registry SMP served under another party's cert), else null. Not paginated (the envelope's `next_cursor` is always null).

輸入參數qlimit

get_seat

Get a seat A Peppol certificate seat: its embedded provider (verified mapping or unverified cert-CN fallback) and the hosts it was observed operating.

輸入參數seatId必填

get_seat_sla

Get a seat's SLA scorecards One seat's SLA scorecards, one per trailing period (30d and 90d). `seatId` is the seat identifier (as reported by `GET /v1/aps/{key}` on `seats[].seat_id`). Empty `items` when the seat has no SLA data yet.

輸入參數seatId必填

get_seat_compliance

Get a seat's compliance scorecard One seat's compliance posture: the registrations under it, its OPEN findings broken down by rule, the daily trend, and where the seat sits against the network. This is what a Peppol Authority's periodic scan reports, from the same published rules (`GET /v1/compliance/rules`), before the letter arrives. Rates are open findings per 1,000 registrations, and `null` when the seat hosts no registrations. The network median and 90th percentile are taken over every seat that hosts registrations — a seat with no finding of a rule counts as 0 — so they describe the whole network, not only the seats that break the rule. Read from a daily rollup: `snapshot_date` is the day it describes, and is `null` (with zero counts and empty lists) for a seat no scan has covered yet.

輸入參數daysseatId必填

list_events

List global change events Every typed change event, newest-first, cursor-paginated. Any anomaly an event triggered is embedded on it. `cursor` walks older events; `prev_cursor` walks the newer edge (for live polling). The first page carries a `meta` block with exact type facets + filter count and an auto-bucketed timeline chart.

輸入參數hostseattypelimitsinceuntilcursordoctypeparticipantprev_cursor

list_participants

List participants The participant set, keyset-paginated. Default sort is first-seen newest-first. Comma-array filters (`country`, `scheme`, `smp`, `ap`, `doctype`, `transport_profile`, `host`, `provenance`, and the company-register cuts `entity_type`, `sector`, `size`, `region`, `postcode`), the single-valued `sub_provider` cut, `registered` + `vat_liable` booleans, and a smart `q` (a full Peppol ID or a bare identifier number matches the ID; other text is a name search on the business-card name or the company-register name — see `q`). First-page `meta` carries estimated totals and rollup facets; `meta.filter_count` is a bounded exact count that degrades to null (never an error) if it exceeds the query timeout. A name search that exceeds the query timeout returns an empty first page with `meta.search_degraded`, and a 503 on a later page. Discovered participants carry no name/card fields (privacy).

輸入參數qapsmphostsizesortlimitcursorregionschemesectorcountry另有 14 個

get_participants_mix

Get a filtered participant breakdown The participant set broken down by country, entity type, NACE Rev. 2.1 division, size class, region and serving Access Point, over a FILTERED slice — so a breakdown stays true while the list is cut down. The filters are the same names and shapes as `GET /v1/participants`. TWO SOURCES, one shape, named by `source`. A request that narrows on NOTHING is answered from the hourly rollup (`source: "rollup"`, with `refreshed_at`) — the whole-network breakdown, no scan. A request that narrows is computed live (`source: "slice"`). BOUNDED BY DESIGN. A live slice is computed only while it is narrow (under an internal cap of 10,000 participants). A slice wider than the cap, or a request carrying a filter this endpoint cannot express (`doctype`, `transport_profile`, `q`, `host`, `sub_provider`), answers `degraded: true` with every mix null — never a wrong number and never an error. Callers fall back to the whole-network breakdown on `GET /v1/stats/participants`. Counts are sparse the same way the rollup facets are: company enrichment covers a handful of registers, so every mix except `country_mix` sums BELOW `participant_count` and the un-enriched remainder is derived from the total rather than served as a bucket. `ap_mix` names the busiest Access Point Seats and folds the rest into one `__other__` bucket.

輸入參數apsmpsizeregionschemesectorcountrynot_smpnot_sizepostcodenot_regionnot_sector另有 6 個

get_participant_stats

Participant facet stats Global participant facet counts (per country/scheme/smp/ap/doctype/transport_profile, registered share, provenance split) plus an estimated total, from the hourly rollup. `total_count` counts every ID ever registered; `registered_count` and the `country_registered` facet scope the same data to the LIVE (registered) IDs (issue #818). Keyless-cacheable — safe for the marketing site to hit directly.

無需輸入參數。

get_participant_stats_history

Participant facet history A daily time series over one participant facet dimension (adoption curves / QoQ trends), from daily snapshots of the rollup. History accrues from the day the feature shipped. Keyless-cacheable.

輸入參數tokeyfromlimitdimension必填

get_participant_joiners

Network joiners curve The real onboarding curve (issue #222): joiner counts bucketed by derived network join date (business-card RegistrationDate, else genuine first-seen), with a whole-network coverage split (registration_date / first_seen / unknown). The unknown/seed tail is reported in `coverage` only, never folded into a bucket. Keyless-cacheable.

輸入參數bucket

list_software

List the software library (Market) The software catalogue's PRODUCT taxonomy joined to what the network shows: for every engine, its display name, vendor, category and homepage, the current host count broken down by observed role, when it was first and last seen, a compliance signal for the seats running it, and a host-count trend of up to 90 UTC days. Every catalogue engine appears, including one the network does not currently show (`hosts: 0`, a flat trend) — the library is the catalogue, not only today's sightings. `category` is the vendor's own framing; `roles` is the OBSERVED fact and is the one to trust where the two disagree. `compliance.seats_linked` is deliberately not called "owned": an engine → seat link is MANY-TO-MANY, so a seat whose hosts run two engines is counted under both and its findings appear under both. Summing `open_findings` across engines therefore OVER-COUNTS the network total; the figure answers "how much compliance debt sits behind this engine", never "who is to blame". `compliance` is null when no seat is linked to the engine, and `snapshot_date` always travels with the numbers because the daily rollup can be a day stale. `lanes[]` (issue #798) reports each tracked upstream LANE of the engine — a lane is not an engine: `oxalis` covers three independent release ladders — with its `latest_release` and the `hosts_current` / `hosts_behind` / `hosts_unknown` split of the hosts running it (all three null when any is below 10). `advisories` summarises the live advisories published for the product by CVSS severity. Both are NULL — never `[]` or zero counts — for the engines the catalogue tracks no upstream feed for. Market tier.

輸入參數days

get_software

Get one software product (Market) One engine of the software library: the same row the list returns (product metadata, host count per observed role, first/last seen, the compliance signal and the host-count trend) plus the catalogue version and generation stamp. `engine` is a catalogue engine slug as published in `engine` on the list; an unknown slug is a 404. Beyond the list row it also returns `advisory_list[]` (issue #798): every live advisory of the engine's lanes with its id, normalized severity, CVSS score, summary, url and publication stamp, newest first. Null when no lane of the engine has an advisory feed; `[]` when it has one and upstream has published nothing. Market tier.

輸入參數daysengine必填

get_software_stats

Software landscape The free host-software landscape (issue #490): k-anonymised vendor share (k=5, the sub-k tail folded into `other`), version distribution within each named vendor (k=10), ASN hosting share, and a two-denominator coverage block (host-weighted ~90% and participant-weighted ~50%, each named, no bare coverage scalar). Computed live from the temporal software table and edge-cached. Names no operator. Keyless-cacheable.

無需輸入參數。

get_software_stats_history

Software landscape history The software landscape over time, derived from the temporal software table in one windowed pass: per UTC day, the host-weighted identified/total targets and the k-anonymised vendor shares. Keyless-cacheable.

輸入參數tofrom

get_doctype_stats

Document-type landscape The free document-type landscape (issue #647): per-family participant share (Invoice, Order, Credit Note, …), the wildcard-doctype bucket, and the participant denominator. Read from the pre-computed doctype rollup tables and edge-cached. Keyless-cacheable.

無需輸入參數。

get_doctype_stats_history

Document-type landscape history The document-type landscape over time: per UTC day, the participant count for each family, from the doctype history rollup. Keyless-cacheable.

輸入參數tofrom

get_doctype_family

Doctypes within a family The concrete document types within one family (issue #647): each doctype's local name, version, participant count, and share of the family. An unknown family returns an empty `doctypes` array. Keyless-cacheable.

輸入參數family必填

get_doctype_family_countries

A family's receivers by country One document family's receiving participants sliced by ISO-3166 alpha-2 country (issue #652), each with its share of the family total. The country is derived from the participant identifier's ICD; unresolved identifiers bucket as `ZZ`. An unknown family returns an empty `countries` array. Keyless-cacheable.

輸入參數family必填

get_doctype_family_providers

A family's receivers by provider One document family's receiving participants sliced by hosting provider (issue #652), attributed via the SMP-hosted footprint (the participant's current SMP host mapped to a provider), each with its share of the family total. Participants whose SMP host maps to no known provider are omitted. An unknown family returns an empty `providers` array. Keyless-cacheable.

輸入參數family必填

get_compliance_stats

Network compliance landscape The free compliance landscape (issue #692): per-country error rates — the share of a country's registered participants that break at least one published Peppol rule — and the per-rule breakdown of every open finding. Counts ONLY: no participant, seat or hostname appears here; the participant-level records are `GET /v1/compliance/findings` (Network tier). Read from the pre-computed compliance rollup tables and edge-cached. Keyless-cacheable. Pass `country` to scope the whole body to one country (issue #716): the same shape, with `countries` holding that one cell, `rules` its own breakdown, each rule's `share` a share of THAT country's open findings, and the code echoed back in `country`. A country scope is how a structural national pattern is told apart from a real problem — AU and NZ, for example, break `not_in_peppol_directory` almost everywhere because A-NZ PINT participants are absent from the European Peppol Directory by design.

輸入參數country

get_compliance_stats_history

Network compliance trend The network compliance picture over time: one point per UTC day the rollup ran, carrying that day's participant denominator, affected participants, error rate and open findings by grade. The series starts the day the rollup first ran. Keyless-cacheable. Pass `country` for one country's trend (issue #716) — the same series shape, restricted to that country and echoed back in `country`. The per-country series starts the day the country rollup first ran, which is later than the network one.

輸入參數tofromcountry

get_country_churn

Per-country participant churn New (joiner) vs departed (leaver) participants for one country, as a daily series and an all-time monthly rollup, from the hourly churn rollup. A valid but unknown country returns empty arrays. Keyless-cacheable.

輸入參數tocode必填from

get_country_providers

Providers serving a country The Access Points serving one country, ranked two ways from the hourly rollup: `providers` by participant (Peppol-ID) count, and `providers_by_company` by the number of DISTINCT organizations (real businesses) each serves (issue #467). Each row's `key` is the `/v1/aps/{key}` handle and `share` is that provider's fraction of the country's AP-served total for its metric. `company_coverage` (0..1) is how much ID→organization dedup the market shows — ~0 (and `providers_by_company` empty) for markets without register enrichment, meaningfully positive for BE/FR. A valid but unknown country returns empty lists. Keyless-cacheable.

輸入參數code必填

get_deregistered_stats

Get the De-registered overview The participants that left the network. A De-registered ID is a participant that is not registered now AND has at least one closed registration row. An ID that was never observed registered (not scanned yet, or never in the SML) is not de-registered: it is counted apart in `never_registered` and is in no other number here. `leavers` is the sub-count of the De-registered IDs that left while a Provider served them. `deregistered`, `share_pct` and `countries` are the stock of the daily rollup (`as_of`). `flow` and `weekly` are the leave flow from the network growth series of `/v1/network/stats`, to the last complete UTC day: `flow.d7` and `flow.d30` are the same counts as `leavers.last_7d` and `leavers.last_30d` there. A day with no completed change scan is a gap: its de-registrations are counted on the next scanned day, so a period sums all its days and `gap_days` only marks it. A period or a week of gap days only has `leavers: null` — a gap is never 0. Joiners do not depend on the change scan, so a gap day keeps them. `annualized_leave_rate_pct` is the Leaver rate (annualized), the same figure as `leavers.annualized_pct` of `/v1/network/stats`: the 30-day leavers as a percentage of the registered participants at the start of the period, × 365 / the days of the period. Leave dates are reliable from 2026-08-02 (`reliable_from`); a period that would open earlier is clamped to it, and the weekly trend starts there. The event date of a de-registration is about 3 days after the true leave (3 consecutive scans without the ID). Free. The company breakdown of the same population is `/v1/stats/deregistered/companies` (Market).

無需輸入參數。

get_deregistered_company_stats

Get the company breakdown of the De-registered IDs Who left: the De-registered IDs of `/v1/stats/deregistered` (same population, same daily rollup, same `deregistered` total) by company profile, register status, lifetime, re-activation and leftovers. `entity_type`, `sector`, `size` and `region` come from the company register (BE, FR, NO, SE, FI and SI only) and cover the `enriched` IDs: the cells of each of the four add up to `enriched`, with the key `unknown` for an enriched ID that has no value in that breakdown. Each cell carries `base`, the registered IDs in the same cell, so the two mixes can be compared. `company_status` is the status of the company in its register now: `active` (still in business, gone from Peppol), `ceased`, or `unmatched` (no register match). `lifetime` is the time from the join date to the de-registration; `unknown` holds the IDs with no usable join date or a leave before 2026-08-02. `leftovers` counts the De-registered IDs that still have a Peppol Directory entry (`directory_card`). `reactivation` is the share of the IDs de-registered since 2026-08-02 that are registered again. A count below 10 is withheld (`count: null`, `suppressed: true`), and so is a cell with a registered base from 1 to 9 (`base: null` too). When one cell alone of a breakdown is withheld, the next-smallest cell is withheld with it, so that it cannot be had back by subtraction (not for `leftovers`, which is part of no total). Counts only: no company and no natural person is named.

無需輸入參數。

list_deregistered_ids

List the latest De-registered IDs The De-registered IDs of `/v1/stats/deregistered` (same population, same daily rollup) with the newest leave date: at most 1000, newest first, cursor-paginated. Each item is a `/v1/participants` list item plus `left_at`, the close of its latest registration. `left_at` is recorded about 3 days after the true leave, and a date before 2026-08-02 is not reliable. An ID that is registered again since the rollup run is left out, so a page can be shorter than `total` says. `/v1/participants?registered=false` is a wider list: it also holds the never-registered IDs, which are not de-registered.

輸入參數limitcursor

list_cohort_moves

List bulk AP migrations Detected bulk migrations between Access Points, largest first. A cohort is a gap-≤3-day island of (from_provider, to_provider) mover days that clears three thresholds: at least 25 participants, at least 40 % of them on the busiest day (which rejects a steady drip), and at most 20 active days for the pair over the trailing 40 days (which rejects a recurring partnership). Every day is the PROBE-OBSERVATION day — the day the change scan saw the SMP record change, not the day the migration was executed — so a cohort is always a `[first_day, last_day]` range and `peak_day` is the busiest observation day. Render the range, never a single date. `top_country` is derived from the ICD prefix of the participant identifiers, not from business-card country fields. `merge_suspect` marks a cohort large enough (or whose source provider no longer resolves in the directory) to be a provider merge or a renamed provider rather than that many independent customer decisions — the canonical case is Sovos → Sage, 10,574 participants. Such rows are data events, not customer decisions; verify one before quoting it. The flag is a CURRENT judgment, re-evaluated on every recompute, not frozen at detection. PLATFORM MOVES. A mover is a platform move when the platform that serves the participant stayed and only the certificate Seat changed: it is not a customer decision. The verdict is per DIRECTED provider pair (from → to), over all its movers since 2026-08-02, with one of two reasons (`same_host`, `sub_provider`): at least 90% of the movers whose endpoint host can be compared (5 or more, and at least 50% of all movers of the pair) kept their endpoint host, or at least 90% of 25 or more movers still carry, at the new provider, the sub-provider brand of the provider they left. It is a CURRENT judgment, computed again on every rollup cycle. A cohort of such a pair has `platform_move: true`. It stays in the list. A Vendor's cohorts (`provider=v-<slug>`) are not changed a

輸入參數tofromlimitcursorproviderdirectionmerge_suspectmin_participants

get_provider_moves

Get moves between providers The from→to matrix of participants that changed Access Point provider in a trailing window: who lost participants to whom, for the whole network or for one country (`country`), in one call. The `top` largest providers on each side keep their identity (`from` = sources, `to` = destinations; a provider can be on both). Every other provider folds into one "Other" node per side, and `other` gives the number of folded providers and their participants. `pairs` is the COMPLETE folded matrix, largest first: a `null` `from` or `to` is the "Other" node of that side, zero cells are omitted, and the values sum to `total` exactly. A node's `value` is all its moves in the window, also the moves to or from a folded provider. A move inside one provider (between two of its own Access Points) is not counted. Every day is the PROBE-OBSERVATION day — when the change scan saw the SMP record change — not the day a migration was executed. A window with no moves returns `total: 0` and empty lists. PLATFORM MOVES. A mover is a platform move when the platform that serves the participant stayed and only the certificate Seat changed: it is not a customer decision. The verdict is per DIRECTED provider pair (from → to), over all its movers since 2026-08-02, with one of two reasons (`same_host`, `sub_provider`): at least 90% of the movers whose endpoint host can be compared (5 or more, and at least 50% of all movers of the pair) kept their endpoint host, or at least 90% of 25 or more movers still carry, at the new provider, the sub-provider brand of the provider they left. It is a CURRENT judgment, computed again on every rollup cycle. The movers of a platform-move pair are in no node, in no cell and not in `total`: `platform` gives their number and the number of directed provider pairs they come from. The matrix has Providers only; a Vendor is not in it. With `country`, the matrix holds the moves of the participants of that country: card country first, the countr

輸入參數topdayscountry

get_provider_roster_spread

Get the provider roster-size spread per country How Access Point provider roster sizes are spread in each country, in one call. A roster size is the number of participant IDs one provider serves in the country (`country_roster` of `GET /v1/aps?country=`). Each country row is the five-number summary over the providers with at least one participant there: `n` providers, `min`, `q1`, `median`, `q3`, `max`, and `total` (the sum). Quantiles use linear interpolation between the two closest ranks (type 7), rounded to 2 decimals. `points` is every roster size in ascending order when the country has fewer than `points_max` providers, and null at or above it. The response carries sizes only, no provider key or name. Countries are ordered by median, largest first. A summary of a country with few providers says little: the console does not draw a country with fewer than 8.

無需輸入參數。

list_cohort_move_participants

List participants in a bulk AP migration The drill-down: the participant IDs behind one cohort, oldest observation day first. A cohort's membership is DEFINED as the mover events its provider pair and day range select, so this list is always in step with the cohort's counts. Cursor-paginated on (day, value). `id` is the request-lifetime handle from `GET /v1/stats/cohort-moves`. The detector re-clusters the trailing window on every run, so a handle whose cohort boundaries have since shifted answers 404 rather than a stale list — re-read the feed instead of persisting ids.

輸入參數id必填limitcursor

list_anomalies

List anomalies The anomaly feed, newest-first, cursor-paginated.

輸入參數hostseatgradelimitsincecursordetectoracknowledged

get_anomaly

Get an anomaly One anomaly by its stable content-derived key.

輸入參數id必填

get_sml_status

Get SML/SMK zone status One entry per monitored zone: quorum verdict, per-location canary breakdown, DNAME cutover state, management-host TLS snapshot and zone incidents.

無需輸入參數。

get_id_quality

Peppol ID quality summary Per-scheme (ICD) summary of the structural identifier checks: how many participants were checked, how many failed their scheme's rule, and the resulting violation rate. Ordered by violation count, busiest first.

無需輸入參數。

list_id_quality_malformed

List malformed participant identifiers The individual identifiers that failed their scheme's structural rule, keyset-paginated on (scheme, value). The first page's `meta.facets` gives scheme and reason counts over the filtered set.

輸入參數qsmplimitcursorreasonscheme

get_id_quality_hosting

Hosting rollup for malformed identifiers Which Access Points and SMPs serve the malformed identifiers, honouring the same `scheme`/`reason`/`q` filters as the malformed list. Access points and SMPs are ranked by malformed-id count; `totals` covers the filtered set.

輸入參數qsmpreasonscheme

list_compliance_rules

List the compliance rule catalogue The published rules registrations are judged against: what each rule requires, what it applies to, how severe a breach is, and how many findings requires, what it applies to, and how severe a breach is. Free — the rules themselves are public; the findings against them are on `GET /v1/compliance/findings`.

無需輸入參數。

list_compliance_findings

List compliance findings Deterministic verdicts against the published rules, newest first and keyset-paginated on (`first_detected_at`, `finding_id`). A finding stays `open` until the registration is corrected, at which point the next scan stamps `resolved_at`; `first_detected_at` survives every re-scan. Distinct from `/v1/anomalies`, which reports observed behaviour rather than rule breaches. The first page's `meta.facets` gives rule and grade counts over the filtered set.

輸入參數ruleseatgradelimitsincecursorschemestatuscountry

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 83%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款不適用

    託管服務按其提供方的條款使用,因此這裡不要求授權條款。此檢查項不計入百分比。