mcpbeat Sign in

PeppolStatus MCP Server

by peppolstatus Your server? Claim it
answering

PeppolStatus is answering right now. Last checked 13 min ago. It exposes 56 tools.

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

Uptime history 35 days of history
35 days agonow
100.0%
Uptime 24h
92 of 92 checks
56
Tools
read from the server
298 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 48

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 9 August 2026. No other catalogue keeps this.

9 Sep 2 tool descriptions were rewritten get_compliance_stats, get_compliance_stats_history
9 Sep 2 tools changed the parameters they ask for get_compliance_stats, get_compliance_stats_history
8 Sep 5 tools appeared get_compliance_stats, get_compliance_stats_history, get_seat_compliance and 2 more
8 Sep 2 tools changed the parameters they ask for3 times that day list_compliance_findings, list_participants
8 Sep a tool description was rewritten list_participants
3 Sep 3 tools appeared get_doctype_family_countries, get_doctype_family_providers, get_network_history
3 Sep a tool description was rewritten get_network_summary
2 Sep 3 tools appeared get_doctype_family, get_doctype_stats, get_doctype_stats_history
27 Aug a tool appeared get_participant_availability
24 Aug 2 tools changed the parameters they ask for list_anomalies, list_software_anomalies
and 26 more, back to 9 August 2026

Nothing serious here today

Today is the operative word: we check PeppolStatus every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 13 min ago.

run in your terminal
claude mcp add api --transport http https://mcp.peppolstatus.com
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "api": {
      "url": "https://mcp.peppolstatus.com"
    }
  }
}
~/.codex/config.toml
[mcp_servers.api]
url = "https://mcp.peppolstatus.com"
.cursor/mcp.json
{
  "mcpServers": {
    "api": {
      "url": "https://mcp.peppolstatus.com"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "api": {
      "url": "https://mcp.peppolstatus.com"
    }
  }
}

Available tools 56

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

participant
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.
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`).
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.
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.
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. 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.
list_participant_events
List a participant's change events The participant's typed change events, newest-first, cursor-paginated.
host
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.
get_host_software
Get a host's software fingerprint The detected software of a host across ALL its roles: vendor, version and hosting per role, each with its confidence tier, first-seen timestamp and the structured evidence that fired. `?at=` returns point-in-time state. Market tier.
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.
list_host_incidents
List a host's incidents Incidents for one host, newest-first, cursor-paginated.
list_host_software
List all hosts' software (Market) Every host with open software fingerprint rows, one row per (hostname, role) with the vendor / version / hosting axes folded in (value, tier, first-seen; plus vendor `variant` and version `kind`). The evidence blob is omitted to keep the list lean — it stays on the per-host resource. Cursor-paginated on the stable (hostname, role) order; optional `vendor=` filter. Market tier.
list_host_software_history
List a host's software-fingerprint history The closed (superseded) software rows for one host, newest-first, cursor-paginated. Each row is one axis transition with its evidence. Market tier.
doctype
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.
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.
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.
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.
access
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.
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.
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. Bounded to 500 rows (never paginated; next_cursor null).
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).
compliance
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.
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.
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.
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`.
provider
get_provider
Get a curated provider A curated provider navigable to its seats and each seat's observed hosts.
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).
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.
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.
quality
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.
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.
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.
seat
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.
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.
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.
software
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, 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.
list_software_anomalies
List software anomalies The software-fingerprinting anomaly feed (spec §6): version downgrades and vendor swaps, both graded `notice`. A `market` carve-out — the general `/v1/anomalies` feed (network) excludes these detectors. Same shape as that feed.
country
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.
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.
network
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.
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.
public
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.
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).
adoption
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 section rollup, region, FR-only département + size class, 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) / INSEE région (FR) codes and sector cells the NACE 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).
anomalies
list_anomalies
List anomalies The anomaly feed, newest-first, cursor-paginated.
anomaly
get_anomaly
Get an anomaly One anomaly by its stable content-derived key.
events
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.
hosts
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.
incidents
list_incidents
List incidents The global incident feed, newest-first, cursor-paginated.
participants
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 `scheme::value`/bare value hits the ID index; free text runs a trigram name-contains). 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. Discovered participants carry no name/card fields (privacy).
providers
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).
sml
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.
smps
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`. Not paginated (the envelope's `next_cursor` is always null).
summary
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.

Endpoints

URLTransportStateLatencyChecked
https://mcp.peppolstatus.com streamable-http answering 297 ms 13 min ago

Alternatives to PeppolStatus

same job, measured the same way
Uptimely
by getuptimely

Uptime monitoring: monitors, incidents, alerts, maintenance, on-call, status pages and telemetry.

answering
Nooticr
by nooticr

Social intelligence for 10 networks: read posts and trends, monitor brand mentions, then create.

572 installs/wk answering
Timps
by sandeeprdy1729

Persistent memory with contradiction detection, burnout monitoring, and 69 intelligence tools.

56 installs/wk local only
Hotel Rate Monitoring API
by veyvey45-eng

Remote MCP server for hotel rate monitoring, parity checks, and pricing intelligence via Apify.

answering
C
Vantaj
by vantaj

Vantaj uptime monitoring via MCP - manage monitors, heartbeats, incidents, and status pages.

13 tools answering
HostTracker
by hosttracker

Website uptime monitoring: run checks from 300+ locations, manage monitors, alerts and incidents

65 tools answering
Hyperping
by hyperping

Uptime, API and server monitoring with outages, reporting, on-call and status pages.

26 tools answering
Fettle
by fettle

Uptime monitoring for developers — monitors, incidents, heartbeats and status pages

23 installs/wk answering

PeppolStatus — questions

Answers built from our own checks of this server.

What can PeppolStatus do?
It exposes 56 tools, read directly from the server on our last check. Among them: get_access_point, get_access_point_churn, get_adoption, get_anomaly, get_compliance_stats, get_compliance_stats_history and 50 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is PeppolStatus mostly used for?
Its tools cluster around participant, host and doctype. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is PeppolStatus working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 298 ms. The bar chart above shows every period we have measured.
How do I connect PeppolStatus?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does PeppolStatus need an API key?
No. PeppolStatus completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 56 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is PeppolStatus?
It answers our handshake in 298 ms on average, which is faster than 54% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.