Hosted, no install: read-only censorship incident records, country index data and coverage.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this for questions like 'is the internet censored in Iran' or 'is X blocked in Y' where Y is a country: returns Voidly's country-level censorship index entry for one two-letter country code (status level, score, OONI anomaly rate and measurement count over the index's rolling window). It is a country-level signal, not a check of one website. This connector has no per-site test. A site with no measurement is unknown, not accessible. The score is the share of OONI measurements flagged anomalous over the index window, not a measure of how censored a country is. The response update time is not when the underlying measurements were observed.
Two-letter ISO country code.
Use this for questions like 'is the internet censored in Iran' or 'is X blocked in Y' where Y is a country: returns Voidly's country-level censorship index entry for one two-letter country code (status level, score, OONI anomaly rate and measurement count over the index's rolling window). It is a country-level signal, not a check of one website. This connector has no per-site test. A site with no measurement is unknown, not accessible. The score is the share of OONI measurements flagged anomalous over the index window, not a measure of how censored a country is. The response update time is not when the underlying measurements were observed.
| Argument | Type | Description |
|---|---|---|
| country_code* | string | Two-letter ISO country code. |
{
"type": "object",
"required": [
"country_code"
],
"properties": {
"country_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter ISO country code."
}
},
"additionalProperties": false
}Use this when you have a published Voidly incident ID (for example IR-2026-0253, from a Voidly page, report or citation) and need that censorship or shutdown incident's details: country, title, status, incident dates, source labels and measurement count. It cannot search incidents by country or keyword. Source labels are attribution, not independent corroboration; check status and dates before calling an incident current.
| Argument | Type | Description |
|---|---|---|
| incident_id* | string | Published incident ID such as IR-2026-0253, or its hex hash ID. |
{
"type": "object",
"required": [
"incident_id"
],
"properties": {
"incident_id": {
"type": "string",
"pattern": "^(?:[A-Z]{2}-[0-9]{4}-[0-9]{4}|[a-fA-F0-9]{12,64})$",
"description": "Published incident ID such as IR-2026-0253, or its hex hash ID."
}
},
"additionalProperties": false
}Use this for questions about how many incident records Voidly holds, such as 'how many censorship incidents has Voidly logged' or the date range of the record. Returns all-country counts of incident records by severity, type and status, the citable_censorship count, and the earliest and latest incident dates. The total includes connectivity-disruption signals and suspected single-source rows, so it is not a count of confirmed censorship; use citable_censorship for that. It does not filter by country and has no per-site check. A count does not show that censorship is happening now.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Use this for a global overview of Voidly's censorship measurement coverage: how many countries, networks and domains are measured, and the window dates of the confirmed-block layer. Country and domain pairs Voidly labels confirmed means blocking was seen on 3 or more networks in the layer window; treat them as leads to check, not verdicts, and check confirmed_block_layer.window_end. When the source marks that layer under review, its counts are withheld and review.verdict is unknown. Domains outside the measured set have no finding.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}