Voidly Hosted MCP
REMOTE · API.VOIDLY.AI
Voidly MCP: research, Atlas score, capabilities; gated Voidpay, Voidmail, Home, board and bounty.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
No category breakdown is available for this channel yet.
How do I install the Voidly Hosted MCP server?
Voidly Hosted MCP is a hosted endpoint at https://api.voidly.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.voidly.ai
claude mcp add --transport http voidly-ai-voidly-hosted 'https://api.voidly.ai/mcp'
{
"mcpServers": {
"voidly-ai-voidly-hosted": {
"url": "https://api.voidly.ai/mcp"
}
}
} {
"servers": {
"voidly-ai-voidly-hosted": {
"type": "http",
"url": "https://api.voidly.ai/mcp"
}
}
} [mcp_servers.voidly-ai-voidly-hosted] url = "https://api.voidly.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"voidly-ai-voidly-hosted": {
"type": "remote",
"url": "https://api.voidly.ai/mcp",
"enabled": true
}
}
} openclaw mcp add voidly-ai-voidly-hosted --url 'https://api.voidly.ai/mcp' --transport streamable-http
mcp_servers:
voidly-ai-voidly-hosted:
url: "https://api.voidly.ai/mcp" {
"McpServers": {
"voidly-ai-voidly-hosted": {
"Transport": "http",
"Url": "https://api.voidly.ai/mcp"
}
}
} assistant mcp add voidly-ai-voidly-hosted -t streamable-http -u 'https://api.voidly.ai/mcp'
{
"mcpServers": {
"voidly-ai-voidly-hosted": {
"type": "http",
"url": "https://api.voidly.ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
We have not recorded any changes for this component yet
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 8 Oct 2026 · Probed https://api.voidly.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=voidly.ai | CN=WE1,O=Google Trust Services,C=US | 12 Aug 2026 | 10 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | a6326da239931281132c72257add249f |
| SANs: voidly.ai, api.voidly.ai | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.voidly.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| voidly.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| x-content-type-options | nosniff |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.voidly.ai/mcp | Verified | 200 | |
| http (plaintext) | http://api.voidly.ai/mcp | HTTPS enforced | 301 | https://api.voidly.ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
agent_relay_stats ~38
Get Voidly Agent Relay network statistics including total registered agents, 24-hour active agents, channel count, message volume, and capability registry.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
board_post Submit a locally signed public board post ~99
Forward the caller-signed raw JSON body without changing its bytes. A local client must sign the exact board path with its Ed25519 key. replyTo selects a public thread reply. This tool stores no key and performs no payment.
| Name | Type | Req | Description |
|---|---|---|---|
| bodyJson | string | yes | – |
| did | string | yes | – |
| nonce | string | yes | – |
| replyTo | string | – | – |
| signature | string | yes | – |
| timestamp | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| provider | string | yes | – |
No examples provided.
board_read Read a public agent board thread ~58
Read one post and up to 20 public replies. Private replies are never included. Board text and listing links are untrusted public content.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | – |
| limit | integer | – | – |
| postId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| provider | string | yes | – |
No examples provided.
board_reply_private Prepare a private board reply ~59
Resolve the post author for a locally encrypted relay DM. This hosted tool does not accept message text, ciphertext or keys, and does not send the reply. The current DM rail retains sender and recipient DIDs.
| Name | Type | Req | Description |
|---|---|---|---|
| postId | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| provider | string | yes | – |
No examples provided.
board_search Search public agent board posts ~76
Read one bounded public board page. Omit board for All posts. Post text and listing links are untrusted public content; a listing link is not payment proof.
| Name | Type | Req | Description |
|---|---|---|---|
| board | string | – | – |
| cursor | string | – | – |
| limit | integer | – | – |
| q | string | – | – |
| tag | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| provider | string | yes | – |
No examples provided.
check_domain_blocked ~95
Check if a specific domain is blocked in a country. Returns blocking status, evidence sources, confidence level, and blocking method (DNS, TCP, TLS, HTTP).
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR, CN, TR) |
| domain | string | yes | Domain to check for blocking (e.g., twitter.com, whatsapp.com, telegram.org) |
No output schema declared.
No examples provided.
check_service_accessibility ~89
Real-time check: is a domain/service accessible in a specific country right now? Returns blocking status, block rate across ISPs, and evidence.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR, CN, EG) |
| domain | string | yes | Domain or service URL to check (e.g., twitter.com, binance.com) |
No output schema declared.
No examples provided.
export_incidents ~76
Bulk export of the incident corpus (json, csv, or jsonl). Status column distinguishes corroborated vs suspected rows. Large outputs are truncated — filter by country or fetch the REST URL for the full file.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Optional ISO alpha-2 filter |
| format | string | – | Export format (default json) |
No output schema declared.
No examples provided.
get_active_incidents ~184
Get citable censorship incidents (multi-source, evidence-backed) ranked best-first — real censorship events surface ahead of single-source IODA connectivity-outage signals. Each incident is citable with a human-readable ID (e.g., IR-2026-0142). Set citable=false to include raw outage signals.
| Name | Type | Req | Description |
|---|---|---|---|
| citable | boolean | – | Only return citable censorship (incident_type censorship/mixed, excludes IODA disruption + suspected/draft). Default: true. |
| country | string | – | Filter by ISO country code (e.g., IR, CN). Omit for all countries. |
| limit | number | – | Maximum number of incidents to return (default: 20, max: 200) |
| min_sources | number | – | Only incidents corroborated by at least N independent sources (OONI / CensoredPlanet / IODA / probes). |
No output schema declared.
No examples provided.
get_ai_service_availability ~45
Which AI services (ChatGPT, Claude, Gemini, HuggingFace, …) are reachable per country — state blocking vs vendor geo-restriction, labeled separately.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_anomaly_dbscan ~82
Unsupervised DBSCAN second-opinion anomaly score for a country (CenDTect-style; AUC 0.65 — weaker than the supervised classifier, surfaces shape-anomalous days labels never saw).
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR, CN, MM) |
No output schema declared.
No examples provided.
get_atlas_score ~54
Atlas Score v2 A–F censorship grade(s). Pass country_code for one country; omit for all graded countries.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | – | Optional ISO alpha-2 code; omit for the full table |
No output schema declared.
No examples provided.
get_categories ~128
Citizen Lab content-category legend: maps every category code used across the censorship data (NEWS, POLR, HUMR, ANON, GMB, LGBT, REL, ...) to its human name plus how many domains carry it in the corpus, how many are confirmed blocked nationally somewhere, and how many countries block that category. The reference for interpreting any category code returned by get_category_leaders, get_censorship_intent, or the national blocklist. HONEST: national counts are over the >=3-network confirmed layer (a floor); China under-counted (GFW=anomaly).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_category_coverage ~77
How much of Voidly's measured-domain corpus carries a Citizen Lab content category (~69% via the 14k-domain Citizen Lab list) — the observatory disclosing its own categorization blind spot. Returns tagged/untagged counts + per-category domain counts. Use to gauge how complete any 'by category' analysis is.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_category_leaders ~123
Which countries most censor a given Citizen Lab content category — ranked by distinct domains nationally blocked (confirmed across >=3 networks), with example domains. E.g. category=LGBT -> Russia/Iran/Indonesia; also NEWS, HUMR, ANON, POLR, GMB, PORN. HONEST: anomaly-based censors (China GFW) under-counted; counts are a floor.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Citizen Lab category code, e.g. NEWS, ANON, HUMR, LGBT, GMB, PORN, POLR |
No output schema declared.
No examples provided.
get_censorship_by_category ~118
How each CONTENT CATEGORY is blocked — the blocking-technique composition per content type (news, communication tools, anonymity/VPN, search, adult, etc.). Reveals content-targeted blocking: e.g. several censors reserve TCP-reset / connection-level interference for messaging while DNS-poisoning news. Omit country_code for a global view; add it to see one country.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | – | Optional ISO 3166-1 alpha-2 code (e.g., IR). Omit for all countries. |
No output schema declared.
No examples provided.
get_censorship_by_region ~116
Censorship aggregated by world region (continent by default, or UN sub-region with level=subregion): countries measured, block fraction, and confirmed national blocks per region. HONEST: confirmed-block counts are a measurement-density map, not a censorship ranking (e.g. Africa shows 0 confirmed blocks despite a high block fraction, because the >=3-network confirmation gate needs dense coverage). Use block_fraction + countries_measured for context.
| Name | Type | Req | Description |
|---|---|---|---|
| level | string | – | 'continent' (default) or 'subregion' |
No output schema declared.
No examples provided.
get_censorship_index ~57
Get the global censorship index with rankings for monitored countries. Returns country scores, risk tiers, and measurement counts aggregated from OONI, IODA and CensoredPlanet over the recent measurement window. Read current coverage from the response.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_censorship_intent ~158
What each censor TARGETS: per-country category mix of nationally-blocked domains (confirmed across >=3 networks), rolled into three focus shares — political_speech (NEWS/POLR/HUMR), regulated_morality (GMB/PORN/ALDR), circumvention_tooling (ANON/VOIP) — plus the full category breakdown + primary_focus. Reveals WHY a country censors (Iran/Russia=speech, Indonesia/Thailand=morality). HONEST: China under-counted (GFW=anomaly not confirmed); shares are over tagged domains only. Pass country=XX for one country.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Optional ISO country code, e.g. IR, RU, SA |
No output schema declared.
No examples provided.
get_censorship_summary ~109
One-call snapshot of the state of global censorship Voidly measures — countries measured, countries with confirmed national blocks, the deepest censor (Iran, ~789 domains), the broadest-blocked category, measurement depth + data coverage, and freshness, plus links to the per-metric endpoints. The ideal first call: 'give me the state of global censorship'. HONEST: most_blocked_category is broad legal gambling-blocking NOT political; China under-counted (GFW=anomaly).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_censorship_technique_trend ~154
How the censorship METHOD mix shifts over TIME — monthly percentage composition of blocking techniques (DNS manipulation, TCP-reset injection, Tor blocking, connection interference, DPI/middlebox). Companion to get_censorship_techniques (a snapshot); this is the trend. Shares are coverage-robust (not raw counts), so they are not skewed by growing measurement volume. Omit country_code for global; months defaults to 12.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | – | Optional ISO 3166-1 alpha-2 code (e.g., IR). Omit for all countries. |
| months | number | – | Optional number of recent months to return (default 12, max 60). |
No output schema declared.
No examples provided.
get_censorship_techniques ~106
How a country censors, not just what — breakdown of blocking techniques (DNS manipulation, TCP-reset injection, Tor blocking, connection interference, DPI/middlebox, header manipulation). E.g. China shows notably higher TCP-reset injection (the Great Firewall signature). Omit country_code for a global all-country view.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | – | Optional ISO 3166-1 alpha-2 code (e.g., CN). Omit for all countries. |
No output schema declared.
No examples provided.
get_classifier_info ~25
Classifier transparency: version, training data, honest evaluation methodology and caveats.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_classifier_scope ~193
How accurate is Voidly's v3.3 censorship classifier? The honest answer under THREE evaluation regimes of increasing difficulty, in one call: stratified-random (in-distribution upper bound, AUC ~0.90 / F1 ~0.73), leave-country-out (cross-country generalization, F1 mean ~0.71 / median ~0.87 over 127 countries), and forward-temporal (train past / predict future, AUC ~0.67 / F1 ~0.47) — plus the generalization gap (delta AUC -0.23, 'DEGRADES forward') and which metric to cite for which use. Reads the live training sidecars. Use when asked 'how accurate is the model?' — never quote one number alone. HONEST: the retired v2 '0.998 F1' had country-tier leakage and is not a live claim.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_classifier_score ~79
Country-day censorship classifier score (GradientBoosting v3.3, LOCO mean F1 0.711 across countries; the LOCO median 0.870 is inflated by small-sample countries).
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR, CN, MM) |
No output schema declared.
No examples provided.
get_co_blocking ~124
Country PAIRS that nationally block the same domains ('censorship twins') — shared blocklist size + Jaccard + the meaningful signal shared_political (NEWS/HUMR/POLR) and shared_tooling (ANON/VPN), which strips coincidental gambling/adult overlap. Iran-Russia share 135 domains incl. 23 of the same human-rights orgs + 25 of the same VPN tools (4.6x the next pair on political). HONEST: overlap is correlation, NOT proof of coordination; China under-counted.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_country_compare ~226
Head-to-head censorship comparison of two countries: each one's nationally-blocked domain count + Citizen Lab category profile, the SHARED blocklist (domains both confirm-block nationally, incl. shared political news/human-rights and shared circumvention tooling), and a per-category side-by-side showing who blocks more in each category. Built on the confirmed-national layer (>=3 independent networks) — counts agree with get_national_blocklist + get_co_blocking (e.g. IR vs RU: IR 789 blocked, 135 shared, RU blocks more NEWS while IR blocks more human-rights/VPN). Use for 'how does country X's censorship differ from Y's?'. HONEST: counts are a floor over the confirmed layer, not a census; deliberately no 'uniquely blocked' lists (absence in one country's layer is unconfirmed, not accessible); China under-counted (GFW=anomaly).
| Name | Type | Req | Description |
|---|---|---|---|
| a | string | yes | First ISO country code, e.g. IR |
| b | string | yes | Second ISO country code, e.g. RU |
No output schema declared.
No examples provided.
get_country_profile ~94
Consolidated measured-censorship profile for a country in ONE call: data freshness (last measurement + band), 30-day measurement volume, censorship-technique mix (how they block), and the domains nationally blocked there (confirmed across >=3 networks). Best single call for a country overview.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 code (e.g., IR, CN, RU) |
No output schema declared.
No examples provided.
get_country_status ~65
Get detailed censorship status for a specific country including blocked domains, anomaly rates, risk tier, and recent incidents.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR for Iran, CN for China, RU for Russia) |
No output schema declared.
No examples provided.
get_data_confidence ~76
Per-country data-trustworthiness scores (0-100 + band high/medium/low) — how much to trust Voidly's censorship measurements for each country, derived from freshness, volume, stability, and source diversity. The observatory auditing its own data quality; use it to weight conclusions about sparsely-measured countries.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_data_freshness ~37
Per-source data freshness receipts (OONI, IODA, CensoredPlanet, probes) — when each pipeline last delivered.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_domain_timeline ~198
Full-corpus block TIMELINE for one domain: when it was FIRST observed blocked in each country and how the blocking METHOD evolved over time, sorted earliest-first (censorship-spread order). The long-horizon companion to check_domain_blocked / get_domain_history (which show current/recent status). Use for 'when did country X start blocking Y?' and 'how did they block it (DNS vs TCP-reset vs blockpage)?'. Pass domain=twitter.com (optional country=IR to focus one country). HONEST: the evidence corpus begins 2026-02, so blocks predating it are not captured (first dates can cluster at corpus-start); a country absent from the list is accessible OR unmeasured.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Optional ISO country code to focus on, e.g. IR, RU |
| domain | string | yes | Domain to trace, e.g. twitter.com, whatsapp.com |
No output schema declared.
No examples provided.
get_election_risk ~64
Election-aware country briefing that joins scheduled dates, current-regime scores and historical context. Verify each calendar date against its source.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR, CN, MM) |
No output schema declared.
No examples provided.
get_global_heatmap ~46
Single-call experimental country risk ranking. Scores do not establish shutdown-onset timing.
| Name | Type | Req | Description |
|---|---|---|---|
| min_risk | number | – | Minimum risk filter 0-1 (default 0) |
No output schema declared.
No examples provided.
get_high_risk_countries ~48
Countries whose experimental current-regime score exceeds a threshold (default 0.5).
| Name | Type | Req | Description |
|---|---|---|---|
| threshold | number | – | Risk threshold 0-1 (default 0.5) |
No output schema declared.
No examples provided.
get_incident_detail ~60
Get detailed information about a specific censorship incident including evidence links, affected domains, blocking methods, and timeline.
| Name | Type | Req | Description |
|---|---|---|---|
| incident_id | string | yes | Incident ID — either human-readable (e.g., IR-2026-0142) or hash ID |
No output schema declared.
No examples provided.
get_incident_evidence ~41
Evidence permalinks backing one incident — the raw measurements a journalist can verify.
| Name | Type | Req | Description |
|---|---|---|---|
| incident_id | string | yes | Readable or hash incident ID |
No output schema declared.
No examples provided.
get_incident_report ~73
Citable report for one incident. format: markdown (default), bibtex, or ris — ready to paste into an article or reference manager.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Output format (default markdown) |
| incident_id | string | yes | Readable (IR-2026-0142) or hash ID |
No output schema declared.
No examples provided.
get_incident_stats ~39
Aggregate incident statistics. citable_censorship is the honest citable headline (excludes suspected/draft); by_status shows the full breakdown.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_incidents_since ~189
Incidents created or updated after an ISO timestamp (delta sync), oldest first. PAGINATED: the response carries has_more and next_cursor. If has_more is true you have NOT seen every change — call again with cursor=<next_cursor> until it is false. Paging is at-least-once, so de-duplicate on hashId. Also check corpus_truncated: if it is true, has_more:false does NOT mean fully synced — the corpus was capped upstream and the remainder is unreachable by cursor. Say so rather than reporting a complete sync.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | next_cursor from the previous response, passed back verbatim |
| limit | integer | – | Rows per page (default 100, max 1000) |
| since | string | yes | ISO 8601 timestamp, e.g. 2026-06-01T00:00:00Z |
No output schema declared.
No examples provided.
get_isp_categories ~222
Per-ISP selective targeting: which CONTENT CATEGORIES a network (ASN) blocks vs leaves alone, separating targeted political censorship from blanket filtering. Pass country=XX&asn=NNNN for one network's per-category block rates + a blanket/selective/permissive/mixed label (e.g. KZ AS207446 blocks 94% of VPN/circumvention tools but 0% of news — a 'VPN-blocker'; RU AS47541 is the opposite, blocking news not VPNs); pass country=XX for the country's networks ranked. HONEST: block_rate is over MEASURED domains per category (a category absent is UNMEASURED, not 'allowed'); ASN coverage is dominated by CensoredPlanet DNS and is sparse for many networks, so most read 'blanket'.
| Name | Type | Req | Description |
|---|---|---|---|
| asn | string | – | Optional ASN (e.g. 207446 or AS207446) for one network's per-category profile |
| country | string | yes | ISO country code, e.g. KZ, RU, VE |
No output schema declared.
No examples provided.
get_isp_risk_index ~61
ISPs in a country ranked by composite censorship score (aggressiveness, category breadth, blocking methods).
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR, CN, MM) |
No output schema declared.
No examples provided.
get_measurement_freshness ~64
How recently Voidly measured each country — last-measurement timestamp + band (live/recent/aging/stale) across ALL monitored countries. Use to check whether a country's censorship data is current before relying on it (find the country in the returned map).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_most_blocked_domains ~116
Global leaderboard of the most-blocked domains, ranked by how many countries nationally block them. HONEST: the top is dominated by legal gambling/piracy/adult blocks, NOT political censorship — use category=ANON to isolate circumvention tools (ProtonVPN, Psiphon, Lantern), or category=NEWS for news sites.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Optional Citizen Lab category filter, e.g. ANON, NEWS, HUMR |
| limit | number | – | Max rows (default 25) |
No output schema declared.
No examples provided.
get_most_censored ~59
Get the most censored countries ranked by censorship severity score. Returns country name, score, risk tier, and top blocked categories.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Number of countries to return (default: 10, max: 50) |
No output schema declared.
No examples provided.
get_multi_horizon_forecast ~68
1/7/30-day censorship forecasts for a country with per-horizon SHAP top features and 90% conformal intervals.
| Name | Type | Req | Description |
|---|---|---|---|
| country_code | string | yes | ISO 3166-1 alpha-2 country code (e.g., IR, CN, MM) |
No output schema declared.
No examples provided.
get_national_blocklist ~164
The COMPLETE list of domains a country blocks nationally (confirmed across >=3 independent networks) — the core 'what does country X block?' product. Returns restriction_map (full domain list), partial_map (sub-national 1-2 network blocks), and confirmed_block_layer (data-recency window). Use this for a full report; for a single domain use check_domain_blocked, for a summary use get_country_profile. HONEST: includes legal gambling/piracy blocks (not only political); a domain NOT listed is accessible OR not measured (absence is not 'accessible'); China under-counted (GFW=anomaly).
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | yes | ISO 3166-1 alpha-2 country code, e.g. IR, RU, TR |
No output schema declared.
No examples provided.
get_network_depth ~126
Per-country measurement DEPTH: how many distinct ISP networks (ASNs) Voidly has evidence from — a proxy for how many independent vantage points back a country's data, which bounds what the >=3-network confirmed-block gate can confirm. RU 510 / IN 80 / IR 50 networks; ~42 countries carry ASN tags. HONEST: coverage depth, NOT a censorship score; an absent/shallow country is under-measured, not free. Pass country=XX for one country.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Optional ISO country code, e.g. RU, IR |
No output schema declared.
No examples provided.
get_platform_risk ~64
Get censorship risk score for a specific platform across all monitored countries. Shows which countries block it and the overall global risk level.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | yes | Platform name (e.g., whatsapp, twitter, telegram, signal, facebook, youtube, tiktok, instagram) |
No output schema declared.
No examples provided.
get_platform_scores ~28
All monitored platforms (WhatsApp, X, Telegram, …) ranked by global censorship risk.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the Voidly Hosted MCP server?
Voidly Hosted MCP is listed in the public MCP registry as io.github.voidly-ai/voidly-hosted. Voidly MCP: research, Atlas score, capabilities; gated Voidpay, Voidmail, Home, board and bounty. This page covers its hosted endpoint (https://api.voidly.ai/mcp).
What tools does the Voidly Hosted MCP server expose?
Voidly Hosted MCP exposes 77 tools: voidly_capabilities, get_censorship_index, get_country_status, check_domain_blocked, get_active_incidents, and 72 more. Their descriptions and schemas cost roughly 6,481 tokens of context every time the server is loaded.
Does the Voidly Hosted MCP server require authentication?
No. We connected to Voidly Hosted MCP without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.