@voidly/mcp-server
84-tool MCP server: censorship intelligence (119 countries, 19.6M measurements) + E2E encrypted agent-to-agent messaging (Double Ratchet, X3DH, post-quantum) + Voidly Pay onboarding (agent-to-agent payments, x402, USDC on Base)
Block For Production
trustsnap_d4e3a59035d9aac6.- Transport Compliance
- Tool Surface Design
- Tool Snapshot Churn
- Make tools/list succeed unauthenticated when possible, or document the auth flow in the server card.
- Allow initialize to succeed consistently, or return a deterministic auth-required response with clear metadata.
- Fix the failing checks first, then revalidate to confirm the recovery path.
trustsnap_d4e3a59035d9aac6- No segmented attention signals observed in the current window.
Current trust snapshot
trustsnap_d4e3a59035d9aac6Canonical machine links
Own this MCP?
Claim ownership, prove control with a GitHub, DNS, HTTP, MCP metadata, or email-domain challenge, revalidate now, publish a badge, configure monitoring, and unlock a verified server profile.
POST /v1/servers/npm-voidly/mcp-server/revalidateBadge embed
[](https://verify.sentinelsignal.io/servers/npm-voidly/mcp-server)
Publisher readiness checklist
3/7 readiness checks currently pass. Paid status never changes the objective score; it can add evidence, monitoring, badge analytics, and authenticated validation.
| Check | Status | How to improve |
|---|---|---|
| Ownership verified | Needs work | Prove GitHub, DNS, HTTP, MCP metadata, or domain-email control. |
| Fresh validation | Ready | Keep public evidence inside the 48h publisher launch window. |
| Healthy endpoint | Needs work | Remote endpoint should initialize and list tools reliably. |
| Score threshold | Needs work | Aim for score >= 70 before using production-readiness language. |
| Metadata complete | Ready | Publish description, homepage/docs, remote URL, and support metadata. |
| Risk posture reviewed | Needs work | Address OAuth, write-action, destructive-tool, and protocol findings. |
| Badge ready | Ready | Publish score and freshness badges only when current evidence exists. |
MCP TrustOps
TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.
/v1/decideAlert subscription types
MCP Runtime hosting
Verify Hosted MCP turns a trusted server report into a managed remote MCP endpoint with GitHub deployment provenance, sandbox policy, encrypted secrets, release history, rollback, and audit/usage events.
/hosted/{namespace}/{name}/mcp| Deployment | Status | Endpoint | Release |
|---|---|---|---|
| No hosted runtime deployments yet. | |||
Production readiness class
Evidence confidence
Recommended for
No recommendation profile is available yet.
Client compatibility verdicts
Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.
Evidence provenance
initialize• Errortools_list• Errortransport_compliance_probe• Errorstep_up_auth_probe• Missingconnector_replay_probe• Missing — Frozen tool snapshots must survive refresh.request_association_probe• Missing — Roots, sampling, and elicitation should stay request-scoped.
Evidence provenance
initialize• Errortools_list• Errortransport_compliance_probe• Error
Evidence provenance
action_safety_probe• OK
Evidence provenance
tool_snapshot_probe• Missingconnector_replay_probe• Missing
Why compatibility is limited by client
Remediation checklist
OpenAI connectors expect OAuth for remote server auth.Dynamic client registration materially improves connector setup.Initialize must be reachable.tools/list must succeed.Transport compliance should be in good shape.OAuth interoperability should be strong.
Remediation checklist
Initialize must succeed or cleanly request auth.tools/list must succeed.Transport behavior should match Claude-compatible HTTP expectations.A useful Claude integration needs at least one exposed tool.search fetch only is not yet satisfiedwrite actions present is not yet satisfied
Remediation checklist
- No explicit blockers recorded.
Verdict traces
server_failing• critical • Latest validation is failingofficial_registry_entry_drifted• medium • Official registry entry drifted
Client verdict trace table
| Verdict | Status | Checks | Winning source | Conflicts |
|---|---|---|---|---|
openai_connectors |
Not client-compatible | initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe | live_validation | none |
claude_desktop |
Not client-compatible | initialize, tools_list, transport_compliance_probe | live_validation | none |
unsafe_for_write_actions |
Publishing allowed | action_safety_probe | live_validation | none |
snapshot_churn_risk |
Low | tool_snapshot_probe, connector_replay_probe | history | none |
Publishability policy profiles
- Search Fetch Only: No
- Write Actions Present: No
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
- Search Fetch Only: No
- Write Actions Present: No
- Oauth Configured: No
- Admin Refresh Required: No
- Safe For Company Knowledge: No
- Safe For Messages Api Remote Mcp: No
Compatibility fixtures
- remote_http_endpoint: Passes
- oauth_discovery: Degraded
- frozen_tool_snapshot_refresh: Passes
- request_association: Passes
- remote_transport: Passes
- tool_discovery: Likely to fail
- auth_connect: Likely to fail
- safe_write_review: Passes
Authenticated validation sessions
Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.
/v1/verify/v1/ci/previewPublic server reputation
Incident & change feed
| Timestamp | Event | Details |
|---|---|---|
| Aug 04, 2026 10:31:33 AM UTC | Latest validation: failing | Score 47.4 with status failing. |
Capabilities
- OAuth:
- DCR/CIMD:
- Prompts:
- Homepage: https://voidly.ai/mcp
- Docs: https://voidly.ai/mcp
- Support: https://github.com/voidly-ai/mcp-server/issues
- Icon: none
- Remote endpoint: https://voidly.ai/mcp
- Server card: none
Security posture
Agent Commerce & Payment Readiness - Beta
Beta assessment. Verify separates commerce-adjacent context from observed payment execution. Usage, billing, pricing, card, wallet, or meter terms alone do not make a server payment-capable. This is not a certification of safety, compliance, or fraud prevention.
Warnings
No commerce-specific warnings generated.
Evidence
| Field | Value | Source | Matched terms | Confidence |
|---|---|---|---|---|
| commerce_signal | weak | server_metadata | limit, rate | low |
| payment_rails | x402, crypto | tool_schema | x402, crypto | medium |
Recommended operator fixes
- No commerce-specific fixes suggested.
Tool capability & risk inventory
No tool inventory available from the latest validation run.
Write-action governance
Status detail: No unsafe write-action governance gaps detected on the latest validation.
| Tool | Risk | Flags | Safeguards |
|---|---|---|---|
| No high-risk tools were detected on the latest run. | |||
Action-controls diff
Need at least two validation runs before diffing action controls.
Why this score?
Algorithmic score breakdown
Compatibility profiles
Connector URL: https://voidly.ai/mcp # No OAuth metadata detected. # Server: npm-voidly/mcp-server
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": ["mcp-remote", "https://voidly.ai/mcp"]
}
}
}
smithery mcp add "https://voidly.ai/mcp"
curl -sS https://voidly.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Actionable remediation
| Severity | Remediation | Why it matters | Recommended action |
|---|---|---|---|
| Critical | Ensure tools/list succeeds consistently | Tools discovery is the minimum viable contract for most MCP clients and directories. | Make tools/list succeed unauthenticated when possible, or document the auth flow in the server card.Playbook
|
| Critical | Make initialize deterministic and client-friendly | If initialize fails or requires undocumented auth, many MCP clients cannot connect. | Allow initialize to succeed consistently, or return a deterministic auth-required response with clear metadata.Playbook
|
| Critical | Respond to latest validation is failing | Core MCP flows did not validate successfully on the latest run. | Fix the failing checks first, then revalidate to confirm the recovery path.Playbook
|
| High | Align session and protocol behavior with Streamable HTTP expectations | Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. | Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.Playbook
|
| High | Associate roots, sampling, and elicitation with active client requests | Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Expose /.well-known/oauth-protected-resource | Without a protected-resource document, OAuth clients cannot discover auth requirements reliably. | Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.Playbook
|
| High | Keep connector refreshes backward compatible | Managed connector clients freeze tool snapshots, so removed tools, new required args, and breaking output changes can break published integrations after refresh. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| High | Publish OAuth authorization-server metadata | Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. | Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.Playbook
|
| High | Stop asking users to paste secrets directly | Public MCP servers should prefer OAuth or browser-based auth guidance over in-band secret collection. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Adopt a current MCP protocol revision | Older protocol revisions reduce compatibility with newer clients and registry programs. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Close connector-publishing gaps | Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Document minimal scopes and return cleaner auth challenges | Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. | Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.Playbook
|
| Medium | Publish OpenID configuration | OIDC metadata improves token validation and client compatibility. | Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.Playbook
|
| Medium | Raise Interface Quality score | How well the tool/resource interface communicates and behaves under automation. | Improve schemas, error contracts, and recovery messages so agents can reason about the surface automatically.Playbook
|
| Medium | Reconcile registry, server-card, and repository metadata | Directory trust falls quickly when official registry fields drift from the live server card or public repo metadata. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Reduce tool-surface churn | Frequent add/remove or output-shape drift makes published connectors and cached tool snapshots brittle. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Medium | Repair prompts/list or stop advertising prompts | Prompt metadata should either work live or be removed from the advertised capability set. | Only advertise prompts if prompts/list works and prompt arguments are documented.Playbook
|
| Medium | Repair resources/list or stop advertising resources | Resource metadata should either work live or be removed from the advertised capability set. | Only advertise resources if resources/list works and resources expose stable URIs/types.Playbook
|
| Medium | Respond to official registry entry drifted | Registry and live server-card provenance fields are currently out of sync. | Update the official registry, server card, or repo metadata until provenance fields align again.Playbook
|
| Medium | Support resumable HTTP sessions cleanly | Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Expose modern utility surfaces like completions, pagination, or tasks | Utility coverage improves interoperability with larger clients and long-lived agent workflows. | Expose completions, pagination, and task metadata where supported so larger clients can plan and resume work safely.Playbook
|
| Low | Publish newer MCP capability signals | Roots, sampling, elicitation, structured outputs, and related metadata improve client understanding and ranking. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
| Low | Publish or reconcile the server in the official MCP registry | Official registry presence improves discovery confidence and cross-source consistency. | Inspect the latest validation evidence and resolve the client-visible regression.Playbook
|
Point loss breakdown
| Component | Current | Points missing |
|---|---|---|
| Transport Compliance | 0/4 | -4.0 |
| Tool Surface Design | 0/4 | -4.0 |
| Tool Snapshot Churn | 0/4 | -4.0 |
| Tool Namespace Clarity | 0/4 | -4.0 |
| Tool Capability Clarity | 0/4 | -4.0 |
| Session Semantics | 0/4 | -4.0 |
| Schema Completeness | 0/4 | -4.0 |
| Result Shape Stability | 0/4 | -4.0 |
| OAUTH Interop | 0/4 | -4.0 |
| Input Sanitization Safety | 0/4 | -4.0 |
| Auth Operability | 0/4 | -4.0 |
| Trust Confidence | 0.1/4 | -3.9 |
Validation diff
Need at least two validation runs before diffing changes.
Tool snapshot diff & changelog
Need at least two validation runs before building a tool changelog.
Connector replay
Required-argument replay breaks
| Tool | Added required args | Removed required args |
|---|---|---|
| No required-argument replay breaks detected. | ||
Output-schema replay breaks
| Tool | Removed properties | Added properties |
|---|---|---|
| No output-schema replay breaks detected. | ||
Transport compliance drilldown
Issues: missing_protocol_header, bad_protocol_not_rejected
Request association
Utility coverage
Benchmark tasks
| Benchmark task | Status | Evidence |
|---|---|---|
| Discover tools | Likely to fail |
|
| Read-only fetch flow | Likely to fail |
|
| OAuth-required connect | Degraded |
|
| Safe write flow with confirmation | Passes |
|
Registry & provenance divergence
| Field | Registry | Live server card |
|---|---|---|
| Title | @voidly/mcp-server | voidly |
| Version | 2.17.0 | 2.10.0 |
| Homepage | n/a | https://voidly.ai |
Active alerts
- Latest validation is failing (critical)
Core MCP flows did not validate successfully on the latest run. - Official registry entry drifted (medium)
Registry and live server-card provenance fields are currently out of sync.
Aliases & registry graph
| Identifier | Source | Canonical | Score |
|---|---|---|---|
npm-voidly/mcp-server |
npm_package_discovery | yes | 47.42 |
Alias consolidation
Source disagreements
| Field | What differs | Observed values |
|---|---|---|
| No source disagreements detected. | ||
Install snippets
Connector URL: https://voidly.ai/mcp # No OAuth metadata detected. # Server: npm-voidly/mcp-server
{
"mcpServers": {
"mcp-server": {
"command": "npx",
"args": ["mcp-remote", "https://voidly.ai/mcp"]
}
}
}
smithery mcp add "https://voidly.ai/mcp"
curl -sS https://voidly.ai/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'
Agent access & tool surface
tools/list, prompts/list, and resources/list checks.npm-voidly/mcp-server.Claims & monitoring
No verified maintainer claim recorded.
Alert routing
| Watch | Team | Channels | Minimum severity |
|---|---|---|---|
| No active watch destinations. | |||
Maintainer analytics
Maintainer response quality
Maintainer annotations
No maintainer annotations have been recorded yet.
Maintainer rebuttals & expected behavior
No maintainer rebuttals or expected-behavior overrides are recorded yet.
Latest validation evidence
Failures
initializeClient error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405oauth_authorization_serverno authorization serveroauth_protected_resourceClient error '404 Not Found' for url 'https://voidly.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404openid_configurationno authorization serverprompts_listClient error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405resources_listClient error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405tools_listClient error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405transport_compliance_probeIssues: missing protocol header, bad protocol not rejected (bad protocol=405).
Checks
| Check | Status | Latency | Evidence |
|---|---|---|---|
action_safety_probe |
OK | n/a | No high-risk write, destructive, or exec tools detected. |
advanced_capabilities_probe |
Warning | n/a | Only 1 capability signal(s): completions. |
connector_publishability_probe |
Error | n/a | Publishability blockers: initialize, tools list, protocol version, transport compliance, +2 more. |
connector_replay_probe |
Missing | n/a | No connector replay evidence recorded. |
determinism_probe |
Missing | n/a | tools list unavailable |
initialize |
Error | 604.1 ms | Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405 |
interactive_flow_probe |
Missing | n/a | Check completed |
oauth_authorization_server |
Missing | n/a | no authorization server |
oauth_protected_resource |
Error | 244.4 ms | Client error '404 Not Found' for url 'https://voidly.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404 |
official_registry_probe |
Warning | n/a | Check completed |
openid_configuration |
Missing | n/a | no authorization server |
probe_noise_resilience |
OK | 81.5 ms | Fetched https://voidly.ai/robots.txt |
prompt_get |
Missing | n/a | no prompt name |
prompts_list |
Error | 70.2 ms | Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405 |
protocol_version_probe |
Missing | n/a | No protocol version was advertised. |
provenance_divergence_probe |
Warning | n/a | Check completed |
request_association_probe |
Missing | n/a | No request-association capabilities were advertised. |
resource_read |
Missing | n/a | no resource uri |
resources_list |
Error | 143.8 ms | Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405 |
server_card |
OK | 879.6 ms | _voidly_pay, capabilities, description, documentation |
session_resume_probe |
Missing | n/a | no session id |
step_up_auth_probe |
Missing | n/a | No OAuth or incremental-scope signals detected. |
tool_snapshot_probe |
Missing | n/a | no tools |
tools_list |
Error | 146.7 ms | Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405 |
transport_compliance_probe |
Error | 115.8 ms | Issues: missing protocol header, bad protocol not rejected (bad protocol=405). |
utility_coverage_probe |
Warning | 41.3 ms | Completions advertised; no pagination evidence; tasks missing. |
Raw evidence view
Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [],
"safeguard_count": 0,
"summary": {
"bulk_access_tools": 0,
"capability_distribution": {},
"destructive_tools": 0,
"egress_tools": 0,
"exec_tools": 0,
"high_risk_tools": 0,
"risk_distribution": {
"critical": 0,
"high": 0,
"low": 0,
"medium": 0
},
"secret_tools": 0,
"tool_count": 0
}
},
"latency_ms": null,
"status": "ok"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": true,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [
"completions"
],
"enabled_count": 1,
"initialize_capability_keys": []
},
"latency_ms": null,
"status": "warning"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"initialize",
"tools_list",
"protocol_version",
"transport_compliance",
"tool_surface",
"auth_flow"
],
"criteria": {
"action_safety": true,
"auth_flow": false,
"connector_replay": true,
"initialize": false,
"protocol_version": false,
"remote_transport": true,
"request_association": true,
"server_card": true,
"session_resume": true,
"step_up_auth": true,
"tool_surface": false,
"tools_list": false,
"transport_compliance": false
},
"high_risk_tools": 0,
"tool_count": 0,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "error"
},
"connector_replay_probe": {
"details": {
"reason": "no_tools"
},
"latency_ms": null,
"status": "missing"
},
"determinism_probe": {
"details": {
"reason": "tools_list_unavailable"
},
"latency_ms": null,
"status": "missing"
},
"initialize": {
"details": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"latency_ms": 604.14,
"status": "error"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "missing"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://voidly.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://voidly.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 244.42,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": false,
"official_identifiers": [
"ai.ai-akari/one-minute-akari",
"ai.llmintel/llmintel",
"ai.artidrop/artidrop",
"ai.justpublish/just-publish",
"ai.pimea/pimea",
"ai.afmr/discovery",
"ai.boolsai/directory",
"ai.agenticfabricationnetwork/ufp",
"ai.agenticshelf/graffeo",
"ac.tandem/docs-mcp"
],
"official_peer_count": 10,
"registry_source": "npm_package_discovery"
},
"latency_ms": null,
"status": "warning"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8"
},
"http_status": 200,
"url": "https://voidly.ai/robots.txt"
},
"latency_ms": 81.55,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "no_prompt_name"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"latency_ms": 70.15,
"status": "error"
},
"protocol_version_probe": {
"details": {
"latest_known_version": "2025-11-25",
"reason": "no_protocol_version",
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "missing"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": false,
"drift_fields": [
"title",
"version"
],
"metadata_document_count": 3,
"registry_homepage": null,
"registry_repository": null,
"registry_title": "@voidly/mcp-server",
"registry_version": "2.17.0",
"server_card_homepage": "https://voidly.ai",
"server_card_repository": null,
"server_card_title": "voidly",
"server_card_version": "2.10.0"
},
"latency_ms": null,
"status": "warning"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "no_resource_uri"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"latency_ms": 143.84,
"status": "error"
},
"server_card": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"_voidly_pay": {
"claim_did": "https://voidly.ai/pay/claim",
"for_builders": "https://voidly.ai/pay/for-builders",
"install": {
"cli": "npm install -g @voidly/pay-cli",
"langchain": "pip install voidly-pay-langchain",
"mcp": "npx @voidly/pay-mcp",
"python": "pip install voidly-pay",
"typescript": "npm install @voidly/pay",
"vercel_ai": "npm install @voidly/pay-vercel-ai"
},
"live_demo": "https://huggingface.co/spaces/emperor-mew/voidly-pay",
"marketplace": "https://api.voidly.ai/v1/pay/marketplace",
"note": "Voidly Pay is the open agent-to-agent payment rail. Claim a DID + 10 starter credits in 60s, or paywall any URL via the universal proxy with one query param.",
"universal_proxy": {
"example": "https://api.voidly.ai/v1/pay/proxy?u=<https-url>&to=did:voidly:<your-did>&price=0.01",
"note": "Paywall any public HTTPS URL with one query param. No SDK install required.",
"page": "https://voidly.ai/pay/proxy",
"url": "https://api.voidly.ai/v1/pay/proxy"
}
},
"capabilities": {
"prompts": false,
"resources": false,
"tools": true
},
"description": "Global censorship intelligence + E2E encrypted agent messaging. Real-time monitoring across 130 countries with 2.2B+ measurements.",
"documentation": "https://voidly.ai/api-docs",
"homepage": "https://voidly.ai",
"name": "voidly",
"tools": [
{
"description": "Get the global censorship index with rankings for all monitored countries. Returns country scores, risk tiers, and measurement counts for 130 countries, aggregating 2.2B+ upstream OONI/IODA/CensoredPlanet measurements (the index is computed on the recent measurement window).",
"name": "get_censorship_index"
},
{
"description": "Get detailed censorship status for a specific country including blocked domains, anomaly rates, risk tier, and recent incidents.",
"name": "get_country_status"
},
{
"description": "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": "check_domain_blocked"
},
{
"description": "Get citable censorship incidents (multi-source, evidence-backed) ranked best-first \u2014 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": "get_active_incidents"
},
{
"description": "Get detailed information about a specific censorship incident including evidence links, affected domains, blocking methods, and timeline.",
"name": "get_incident_detail"
},
{
"description": "Verify a censorship claim against real measurement data from OONI, CensoredPlanet, and IODA. Returns verdict with supporting evidence.",
"name": "verify_claim"
},
{
"description": "Get 7-day internet shutdown and censorship risk forecast for a country using XGBoost ML model trained on historical OONI data and political event calendar.",
"name": "get_risk_forecast"
},
{
"description": "Get censorship risk score for a specific platform across all monitored countries. Shows which countries block it and the overall global risk level.",
"name": "get_platform_risk"
},
{
"description": "Real-time check: is a domain/service accessible in a specific country right now? Returns blocking status, block rate across ISPs, and evidence.",
"name": "check_service_accessibility"
},
{
"description": "Get the most censored countries ranked by censorship severity score. Returns country name, score, risk tier, and top blocked categories.",
"name": "get_most_censored"
},
{
"description": "Get Voidly Agent Relay network statistics including total registered agents, 24-hour active agents, channel count, message volume, and capability registry.",
"name": "agent_relay_stats"
},
{
"description": "KeepItOn-validated 7-day shutdown probability for a country (gate-promoted model; live version in the response). Includes honest validation caveats inline.",
"name": "get_shutdown_risk"
},
{
"description": "All scored countries sorted by current 7-day shutdown probability, with risk bands and as-of dates.",
"name": "get_shutdown_risk_leaderboard"
},
{
"description": "Running public record of archived shutdown-risk predictions joined to actual KeepItOn outcomes \u2014 the model proves itself in the open.",
"name": "get_shutdown_risk_accountability"
},
{
"description": "Atlas Score v2 A\u2013F censorship grade(s). Pass country_code for one country; omit for all graded countries.",
"name": "get_atlas_score"
},
{
"description": "1/7/30-day censorship forecasts for a country with per-horizon SHAP top features and 90% conformal intervals.",
"name": "get_multi_horizon_forecast"
},
{
"description": "Single-call shutdown-risk heatmap across every watched country, sorted by risk.",
"name": "get_global_heatmap"
},
{
"description": "Countries whose 7-day forecast exceeds a risk threshold (default 0.5).",
"name": "get_high_risk_countries"
},
{
"description": "Election-aware censorship risk briefing for a country: upcoming elections joined with forecast and historical election-censorship correlation.",
"name": "get_election_risk"
},
{
"description": "Upcoming elections worldwide with censorship-risk overlay.",
"name": "get_upcoming_elections"
},
{
"description": "ISPs in a country ranked by composite censorship score (aggressiveness, category breadth, blocking methods).",
"name": "get_isp_risk_index"
},
{
"description": "All monitored platforms (WhatsApp, X, Telegram, \u2026) ranked by global censorship risk.",
"name": "get_platform_scores"
},
{
"description": "Aggregate incident statistics. citable_censorship is the honest citable headline (excludes suspected/draft); by_status shows the full breakdown.",
"name": "get_incident_stats"
},
{
"description": "Citable report for one incident. format: markdown (default), bibtex, or ris \u2014 ready to paste into an article or reference manager.",
"name": "get_incident_report"
},
{
"description": "Evidence permalinks backing one incident \u2014 the raw measurements a journalist can verify.",
"name": "get_incident_evidence"
},
{
"description": "Bulk export of the incident corpus (json, csv, or jsonl). Status column distinguishes corroborated vs suspected rows. Large outputs are truncated \u2014 filter by country or fetch the REST URL for the full file.",
"name": "export_incidents"
},
{
"description": "Incidents created or updated after an ISO timestamp (delta sync).",
"name": "get_incidents_since"
},
{
"description": "Country-day censorship classifier score (GradientBoosting v3.3, honest LOCO median F1 0.87).",
"name": "get_classifier_score"
},
{
"description": "Classifier transparency: version, training data, honest evaluation methodology and caveats.",
"name": "get_classifier_info"
},
{
"description": "Unsupervised DBSCAN second-opinion anomaly score for a country (CenDTect-style; AUC 0.65 \u2014 weaker than the supervised classifier, surfaces shape-anomalous days labels never saw).",
"name": "get_anomaly_dbscan"
},
{
"description": "Voidly probe network status: nodes, countries, test cadence, recent measurement volume.",
"name": "get_probe_stats"
},
{
"description": "Per-source data freshness receipts (OONI, IODA, CensoredPlanet, probes) \u2014 when each pipeline last delivered.",
"name": "get_data_freshness"
},
{
"description": "Public prediction track record across Voidly forecast products \u2014 hits, misses, and honest baselines.",
"name": "get_prediction_track_record"
},
{
"description": "Which AI services (ChatGPT, Claude, Gemini, HuggingFace, \u2026) are reachable per country \u2014 state blocking vs vendor geo-restriction, labeled separately.",
"name": "get_ai_service_availability"
},
{
"description": "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": "get_country_profile"
},
{
"description": "How a country censors, not just what \u2014 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": "get_censorship_techniques"
},
{
"description": "How the censorship METHOD mix shifts over TIME \u2014 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": "get_censorship_technique_trend"
},
{
"description": "How each CONTENT CATEGORY is blocked \u2014 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": "get_censorship_by_category"
},
{
"description": "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 \u2014 use category=ANON to isolate circumvention tools (ProtonVPN, Psiphon, Lantern), or category=NEWS for news sites.",
"name": "get_most_blocked_domains"
},
{
"description": "Per-country data-trustworthiness scores (0-100 + band high/medium/low) \u2014 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.",
"name": "get_data_confidence"
},
{
"description": "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": "get_censorship_by_region"
},
{
"description": "How recently Voidly measured each country \u2014 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).",
"name": "get_measurement_freshness"
},
{
"description": "What each censor TARGETS: per-country category mix of nationally-blocked domains (confirmed across >=3 networks), rolled into three focus shares \u2014 political_speech (NEWS/POLR/HUMR), regulated_morality (GMB/PORN/ALDR), circumvention_tooling (ANON/VOIP) \u2014 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": "get_censorship_intent"
},
{
"description": "Which countries most censor a given Citizen Lab content category \u2014 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": "get_category_leaders"
},
{
"description": "Country PAIRS that nationally block the same domains ('censorship twins') \u2014 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.",
"name": "get_co_blocking"
},
{
"description": "Per-country measurement DEPTH: how many distinct ISP networks (ASNs) Voidly has evidence from \u2014 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": "get_network_depth"
},
{
"description": "How much of Voidly's measured-domain corpus carries a Citizen Lab content category (~69% via the 14k-domain Citizen Lab list) \u2014 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.",
"name": "get_category_coverage"
},
{
"description": "One-call snapshot of the state of global censorship Voidly measures \u2014 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).",
"name": "get_censorship_summary"
},
{
"description": "The COMPLETE list of domains a country blocks nationally (confirmed across >=3 independent networks) \u2014 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": "get_national_blocklist"
},
{
"description": "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": "get_domain_timeline"
},
{
"description": "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) \u2014 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?' \u2014 never quote one number alone. HONEST: the retired v2 '0.998 F1' had country-tier leakage and is not a live claim.",
"name": "get_classifier_scope"
},
{
"description": "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 \u2014 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": "get_isp_categories"
},
{
"description": "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) \u2014 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": "get_country_compare"
},
{
"description": "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).",
"name": "get_categories"
}
],
"tools_count": 54,
"transport": {
"type": "streamable-http",
"url": "https://api.voidly.ai/mcp"
},
"version": "2.10.0"
},
"url": "https://voidly.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 879.65,
"status": "ok"
},
"session_resume_probe": {
"details": {
"protocol_version": null,
"reason": "no_session_id",
"resume_expected": false,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "missing"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"reason": "no_tools"
},
"latency_ms": null,
"status": "missing"
},
"tools_list": {
"details": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"latency_ms": 146.69,
"status": "error"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"bad_protocol_payload": {},
"bad_protocol_status_code": 405,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 115.84,
"status": "error"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": true,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 405,
"probe_status": "missing"
}
},
"latency_ms": 41.31,
"status": "warning"
}
},
"failures": {
"initialize": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://voidly.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://voidly.ai/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"prompts_list": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"resources_list": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"tools_list": {
"error": "Client error '405 Method Not Allowed' for url 'https://voidly.ai/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405",
"headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"http_status": 405,
"payload": {},
"url": "https://voidly.ai/mcp"
},
"transport_compliance_probe": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"allow": "GET,HEAD",
"content-type": "text/html; charset=utf-8",
"strict-transport-security": "max-age=63072000; includeSubDomains"
},
"bad_protocol_payload": {},
"bad_protocol_status_code": 405,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_protocol_header",
"bad_protocol_not_rejected"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
}
},
"remote_url": "https://voidly.ai/mcp",
"server_card_payload": {
"_voidly_pay": {
"claim_did": "https://voidly.ai/pay/claim",
"for_builders": "https://voidly.ai/pay/for-builders",
"install": {
"cli": "npm install -g @voidly/pay-cli",
"langchain": "pip install voidly-pay-langchain",
"mcp": "npx @voidly/pay-mcp",
"python": "pip install voidly-pay",
"typescript": "npm install @voidly/pay",
"vercel_ai": "npm install @voidly/pay-vercel-ai"
},
"live_demo": "https://huggingface.co/spaces/emperor-mew/voidly-pay",
"marketplace": "https://api.voidly.ai/v1/pay/marketplace",
"note": "Voidly Pay is the open agent-to-agent payment rail. Claim a DID + 10 starter credits in 60s, or paywall any URL via the universal proxy with one query param.",
"universal_proxy": {
"example": "https://api.voidly.ai/v1/pay/proxy?u=<https-url>&to=did:voidly:<your-did>&price=0.01",
"note": "Paywall any public HTTPS URL with one query param. No SDK install required.",
"page": "https://voidly.ai/pay/proxy",
"url": "https://api.voidly.ai/v1/pay/proxy"
}
},
"capabilities": {
"prompts": false,
"resources": false,
"tools": true
},
"description": "Global censorship intelligence + E2E encrypted agent messaging. Real-time monitoring across 130 countries with 2.2B+ measurements.",
"documentation": "https://voidly.ai/api-docs",
"homepage": "https://voidly.ai",
"name": "voidly",
"tools": [
{
"description": "Get the global censorship index with rankings for all monitored countries. Returns country scores, risk tiers, and measurement counts for 130 countries, aggregating 2.2B+ upstream OONI/IODA/CensoredPlanet measurements (the index is computed on the recent measurement window).",
"name": "get_censorship_index"
},
{
"description": "Get detailed censorship status for a specific country including blocked domains, anomaly rates, risk tier, and recent incidents.",
"name": "get_country_status"
},
{
"description": "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": "check_domain_blocked"
},
{
"description": "Get citable censorship incidents (multi-source, evidence-backed) ranked best-first \u2014 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": "get_active_incidents"
},
{
"description": "Get detailed information about a specific censorship incident including evidence links, affected domains, blocking methods, and timeline.",
"name": "get_incident_detail"
},
{
"description": "Verify a censorship claim against real measurement data from OONI, CensoredPlanet, and IODA. Returns verdict with supporting evidence.",
"name": "verify_claim"
},
{
"description": "Get 7-day internet shutdown and censorship risk forecast for a country using XGBoost ML model trained on historical OONI data and political event calendar.",
"name": "get_risk_forecast"
},
{
"description": "Get censorship risk score for a specific platform across all monitored countries. Shows which countries block it and the overall global risk level.",
"name": "get_platform_risk"
},
{
"description": "Real-time check: is a domain/service accessible in a specific country right now? Returns blocking status, block rate across ISPs, and evidence.",
"name": "check_service_accessibility"
},
{
"description": "Get the most censored countries ranked by censorship severity score. Returns country name, score, risk tier, and top blocked categories.",
"name": "get_most_censored"
},
{
"description": "Get Voidly Agent Relay network statistics including total registered agents, 24-hour active agents, channel count, message volume, and capability registry.",
"name": "agent_relay_stats"
},
{
"description": "KeepItOn-validated 7-day shutdown probability for a country (gate-promoted model; live version in the response). Includes honest validation caveats inline.",
"name": "get_shutdown_risk"
},
{
"description": "All scored countries sorted by current 7-day shutdown probability, with risk bands and as-of dates.",
"name": "get_shutdown_risk_leaderboard"
},
{
"description": "Running public record of archived shutdown-risk predictions joined to actual KeepItOn outcomes \u2014 the model proves itself in the open.",
"name": "get_shutdown_risk_accountability"
},
{
"description": "Atlas Score v2 A\u2013F censorship grade(s). Pass country_code for one country; omit for all graded countries.",
"name": "get_atlas_score"
},
{
"description": "1/7/30-day censorship forecasts for a country with per-horizon SHAP top features and 90% conformal intervals.",
"name": "get_multi_horizon_forecast"
},
{
"description": "Single-call shutdown-risk heatmap across every watched country, sorted by risk.",
"name": "get_global_heatmap"
},
{
"description": "Countries whose 7-day forecast exceeds a risk threshold (default 0.5).",
"name": "get_high_risk_countries"
},
{
"description": "Election-aware censorship risk briefing for a country: upcoming elections joined with forecast and historical election-censorship correlation.",
"name": "get_election_risk"
},
{
"description": "Upcoming elections worldwide with censorship-risk overlay.",
"name": "get_upcoming_elections"
},
{
"description": "ISPs in a country ranked by composite censorship score (aggressiveness, category breadth, blocking methods).",
"name": "get_isp_risk_index"
},
{
"description": "All monitored platforms (WhatsApp, X, Telegram, \u2026) ranked by global censorship risk.",
"name": "get_platform_scores"
},
{
"description": "Aggregate incident statistics. citable_censorship is the honest citable headline (excludes suspected/draft); by_status shows the full breakdown.",
"name": "get_incident_stats"
},
{
"description": "Citable report for one incident. format: markdown (default), bibtex, or ris \u2014 ready to paste into an article or reference manager.",
"name": "get_incident_report"
},
{
"description": "Evidence permalinks backing one incident \u2014 the raw measurements a journalist can verify.",
"name": "get_incident_evidence"
},
{
"description": "Bulk export of the incident corpus (json, csv, or jsonl). Status column distinguishes corroborated vs suspected rows. Large outputs are truncated \u2014 filter by country or fetch the REST URL for the full file.",
"name": "export_incidents"
},
{
"description": "Incidents created or updated after an ISO timestamp (delta sync).",
"name": "get_incidents_since"
},
{
"description": "Country-day censorship classifier score (GradientBoosting v3.3, honest LOCO median F1 0.87).",
"name": "get_classifier_score"
},
{
"description": "Classifier transparency: version, training data, honest evaluation methodology and caveats.",
"name": "get_classifier_info"
},
{
"description": "Unsupervised DBSCAN second-opinion anomaly score for a country (CenDTect-style; AUC 0.65 \u2014 weaker than the supervised classifier, surfaces shape-anomalous days labels never saw).",
"name": "get_anomaly_dbscan"
},
{
"description": "Voidly probe network status: nodes, countries, test cadence, recent measurement volume.",
"name": "get_probe_stats"
},
{
"description": "Per-source data freshness receipts (OONI, IODA, CensoredPlanet, probes) \u2014 when each pipeline last delivered.",
"name": "get_data_freshness"
},
{
"description": "Public prediction track record across Voidly forecast products \u2014 hits, misses, and honest baselines.",
"name": "get_prediction_track_record"
},
{
"description": "Which AI services (ChatGPT, Claude, Gemini, HuggingFace, \u2026) are reachable per country \u2014 state blocking vs vendor geo-restriction, labeled separately.",
"name": "get_ai_service_availability"
},
{
"description": "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": "get_country_profile"
},
{
"description": "How a country censors, not just what \u2014 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": "get_censorship_techniques"
},
{
"description": "How the censorship METHOD mix shifts over TIME \u2014 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": "get_censorship_technique_trend"
},
{
"description": "How each CONTENT CATEGORY is blocked \u2014 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": "get_censorship_by_category"
},
{
"description": "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 \u2014 use category=ANON to isolate circumvention tools (ProtonVPN, Psiphon, Lantern), or category=NEWS for news sites.",
"name": "get_most_blocked_domains"
},
{
"description": "Per-country data-trustworthiness scores (0-100 + band high/medium/low) \u2014 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.",
"name": "get_data_confidence"
},
{
"description": "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": "get_censorship_by_region"
},
{
"description": "How recently Voidly measured each country \u2014 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).",
"name": "get_measurement_freshness"
},
{
"description": "What each censor TARGETS: per-country category mix of nationally-blocked domains (confirmed across >=3 networks), rolled into three focus shares \u2014 political_speech (NEWS/POLR/HUMR), regulated_morality (GMB/PORN/ALDR), circumvention_tooling (ANON/VOIP) \u2014 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": "get_censorship_intent"
},
{
"description": "Which countries most censor a given Citizen Lab content category \u2014 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": "get_category_leaders"
},
{
"description": "Country PAIRS that nationally block the same domains ('censorship twins') \u2014 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.",
"name": "get_co_blocking"
},
{
"description": "Per-country measurement DEPTH: how many distinct ISP networks (ASNs) Voidly has evidence from \u2014 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": "get_network_depth"
},
{
"description": "How much of Voidly's measured-domain corpus carries a Citizen Lab content category (~69% via the 14k-domain Citizen Lab list) \u2014 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.",
"name": "get_category_coverage"
},
{
"description": "One-call snapshot of the state of global censorship Voidly measures \u2014 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).",
"name": "get_censorship_summary"
},
{
"description": "The COMPLETE list of domains a country blocks nationally (confirmed across >=3 independent networks) \u2014 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": "get_national_blocklist"
},
{
"description": "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": "get_domain_timeline"
},
{
"description": "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) \u2014 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?' \u2014 never quote one number alone. HONEST: the retired v2 '0.998 F1' had country-tier leakage and is not a live claim.",
"name": "get_classifier_scope"
},
{
"description": "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 \u2014 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": "get_isp_categories"
},
{
"description": "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) \u2014 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": "get_country_compare"
},
{
"description": "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).",
"name": "get_categories"
}
],
"tools_count": 54,
"transport": {
"type": "streamable-http",
"url": "https://api.voidly.ai/mcp"
},
"version": "2.10.0"
},
"server_identifier": "npm-voidly/mcp-server"
}
Known versions
2.17.0
Validation history
Trend history appears after at least two validation runs. This avoids presenting a one-point validation as a trend.
Validation timeline
| Validated | Summary | Score | Protocol | Auth mode | Tools | High-risk tools | Changes |
|---|---|---|---|---|---|---|---|
| Aug 04, 2026 10:31:33 AM UTC | Failing | 47.4 | unknown | unknown | 0 | 0 | none |
Recent validation runs
| Started | Status | Summary | Latency | Checks |
|---|---|---|---|---|
| Aug 04, 2026 10:31:31 AM UTC | Completed | Failing | 2341.9 ms | action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe |