{"coherence_floor":0.3,"coherence_npmi":0.7257,"honest_caveats":["NMF topics are exploratory. Labels are auto-generated heuristics over the top words, not editorial.","Many IODA disruption incidents share boilerplate (\"CenAlert detected interference\"). Dedupe removes near-duplicates by SHA-256 of normalized text, but a residual disruption topic is expected.","Topic assignment is hard (single argmax). An incident with mixed signals (e.g. election + DNS) only counts toward one topic.","Coherence is approximated via pairwise NPMI on the training corpus, not full c_v from Röder et al. Reasonable proxy but not directly comparable to BERTopic numbers in the literature.","Sentence-transformers + BERTopic was not installable in the production venv-ml — fell back to tf-idf+NMF per the project directive. BERTopic with all-MiniLM-L6-v2 would likely surface more semantic clusters; tf-idf catches the lexical surface."],"loaded_at":"2026-05-22T19:44:36.657386Z","max_df":0.95,"method":"tf-idf + NMF (sklearn)","min_df":2,"model":"tfidf_nmf_v1","n_docs":1195,"n_topics":8,"ngram_range":[1,2],"passed_promote_floor":true,"per_country":{"AD":{"0":1},"AE":{"0":1,"2":3,"6":2},"AF":{"0":4,"1":2},"AG":{"0":1,"1":1},"AL":{"0":3,"1":1},"AM":{"0":3,"1":1,"-1":1},"AO":{"0":8,"1":1},"AR":{"0":7,"1":1},"AT":{"0":3,"1":1},"AU":{"0":2,"1":1},"AW":{"0":1},"AX":{"0":1},"AZ":{"0":6,"3":3,"4":4},"BA":{"0":9,"1":1},"BB":{"0":2,"1":1},"BD":{"0":7,"3":1,"4":4,"6":1},"BE":{"0":3},"BF":{"0":4,"1":2},"BG":{"0":6,"1":1},"BH":{"0":3,"3":1},"BI":{"0":2,"1":1},"BJ":{"0":5,"1":1},"BM":{"0":1,"1":1},"BN":{"0":2},"BO":{"0":5,"1":1,"2":1},"BR":{"0":7,"1":1,"4":1},"BS":{"0":1},"BT":{"0":2,"1":1},"BW":{"0":3,"1":1},"BY":{"0":2,"2":1,"3":1,"4":4,"6":1,"7":1},"BZ":{"0":3,"1":1},"CA":{"0":7,"1":1},"CD":{"0":3,"1":2},"CF":{"0":2,"1":1},"CG":{"0":5,"1":1},"CH":{"0":3},"CI":{"0":3,"1":1},"CK":{"1":1},"CL":{"0":3,"1":1},"CM":{"0":10,"1":2},"CN":{"0":5,"1":1,"6":4,"7":1},"CO":{"0":8,"1":1},"CR":{"0":3,"1":1},"CU":{"0":6,"2":2,"3":1,"6":1,"7":1},"CV":{"0":1},"CW":{"0":1},"CY":{"0":3,"1":1},"CZ":{"0":2,"1":1},"DE":{"0":3,"1":1},"DJ":{"1":1},"DK":{"0":1},"DM":{"0":1},"DO":{"0":4,"1":1},"DZ":{"0":5,"1":1,"2":2,"7":1},"EC":{"0":4,"1":1,"7":1},"EE":{"0":3,"1":1},"EG":{"0":9,"2":1,"3":2,"4":2,"6":3,"7":1,"-1":1},"ES":{"0":3,"1":2,"7":1},"ET":{"0":9,"1":1,"2":1,"7":2},"FI":{"0":2},"FJ":{"0":2,"1":1},"FM":{"0":1,"1":1},"FO":{"0":1,"1":1},"FR":{"0":10,"1":1},"GA":{"0":2,"3":2,"5":1},"GB":{"3":1,"5":8,"7":2},"GD":{"0":1,"1":1},"GE":{"0":5,"1":1},"GG":{"0":1,"1":1},"GH":{"0":4,"1":1},"GI":{"0":1,"1":1},"GL":{"0":1},"GM":{"0":1},"GN":{"0":2,"1":1,"-1":1},"GQ":{"0":5,"1":1},"GR":{"0":2,"1":1},"GT":{"0":3,"1":1},"GU":{"0":2},"GW":{"0":1,"1":1},"GY":{"0":2,"1":1},"HK":{"0":4,"1":2},"HN":{"0":8,"1":1},"HR":{"0":3},"HT":{"0":1,"1":1},"HU":{"0":5,"1":1},"ID":{"0":18,"3":1},"IE":{"0":4,"1":1},"IL":{"0":1,"1":1},"IM":{"0":1},"IN":{"0":14,"3":1,"7":3,"-1":1},"IQ":{"0":10,"2":1,"3":2,"6":2,"-1":1},"IR":{"0":18,"2":1,"3":2,"6":3,"7":8},"IS":{"0":2},"IT":{"0":5,"3":1,"-1":2},"JE":{"0":1},"JM":{"0":1,"1":1},"JO":{"1":1,"2":5,"3":1},"JP":{"0":3,"1":1},"KE":{"0":4,"1":1,"7":1},"KG":{"0":2,"1":2},"KH":{"0":4,"2":1,"3":2},"KI":{"0":3,"1":1},"KM":{"0":1},"KN":{"0":2},"KR":{"0":2,"1":1},"KW":{"0":3,"1":1,"2":2,"6":2},"KY":{"0":1},"KZ":{"0":7,"2":1,"3":1,"4":2,"6":1,"7":3},"LA":{"0":1,"1":1},"LB":{"0":4,"1":1,"2":1},"LI":{"0":2,"1":1},"LK":{"0":1,"1":1},"LR":{"0":2,"1":1},"LS":{"1":1},"LT":{"0":5,"1":1},"LU":{"0":1,"1":1},"LV":{"0":2,"1":1},"LY":{"0":2,"3":1},"MA":{"0":2,"2":1,"3":2,"4":1,"-1":1},"MC":{"0":2},"MD":{"0":5,"1":1},"ME":{"0":6,"1":1},"MF":{"0":1,"1":1},"MG":{"0":1},"MK":{"0":5,"1":1},"ML":{"0":1,"1":1},"MM":{"0":6,"1":1,"4":4,"6":3,"7":2,"-1":1},"MN":{"0":2,"1":1},"MO":{"0":1,"1":1},"MR":{"0":1},"MT":{"0":2,"1":1},"MU":{"0":5,"1":1,"6":1},"MV":{"0":1},"MW":{"0":3,"1":1},"MX":{"0":13,"1":1},"MY":{"0":5,"3":1,"-1":1},"MZ":{"0":9,"1":1},"NA":{"0":4},"NC":{"0":1,"1":1},"NE":{"0":4,"1":1},"NG":{"0":14,"2":2,"3":1,"4":1},"NI":{"0":5,"1":1,"2":4},"NL":{"0":5,"1":1},"NO":{"0":1,"1":1},"NP":{"0":6,"3":2},"NR":{"0":2,"1":1},"NZ":{"0":4,"1":1},"OM":{"0":4,"4":1,"-1":2},"PA":{"0":10,"1":1},"PE":{"0":3,"1":1},"PF":{"0":1},"PG":{"0":1,"1":1},"PH":{"0":6,"1":2},"PK":{"0":3,"3":3,"4":6,"6":5,"7":3,"-1":1},"PL":{"0":3,"1":1},"PS":{"0":3,"1":1},"PT":{"0":2,"1":1},"PW":{"0":1},"PY":{"0":6,"1":1},"QA":{"0":2,"1":2,"2":2},"RO":{"0":6,"1":1},"RS":{"0":5,"1":1},"RU":{"0":6,"3":1,"4":4,"6":2,"7":9,"-1":1},"RW":{"0":2,"1":1,"4":2},"SA":{"0":4,"2":2,"3":2,"6":1,"-1":1},"SB":{"0":2,"1":1},"SC":{"0":2,"1":1},"SD":{"0":1,"1":1,"7":2},"SE":{"0":2},"SG":{"0":2,"1":1,"2":2},"SI":{"0":12,"1":1},"SK":{"0":2,"1":1},"SL":{"0":3,"1":1},"SM":{"0":1,"1":1},"SN":{"1":2},"SO":{"0":3,"1":1,"-1":1},"SR":{"0":1},"SS":{"0":2,"1":1,"5":1,"6":1},"ST":{"0":2,"1":1},"SV":{"0":2,"1":1},"SX":{"0":1},"SY":{"0":8,"2":4,"3":2},"SZ":{"0":1,"1":1},"TC":{"0":1,"1":1},"TD":{"0":4,"1":1},"TG":{"0":2,"1":2},"TH":{"0":3,"2":2,"3":1,"6":1},"TJ":{"0":3,"1":1},"TL":{"0":1,"1":1},"TM":{"0":1,"3":2},"TN":{"0":2,"1":1,"2":1,"-1":1},"TO":{"0":2,"1":1},"TR":{"0":7,"3":2,"6":3,"7":1},"TT":{"0":17,"1":1},"TV":{"1":1},"TW":{"0":2,"1":1},"TZ":{"0":3,"2":1,"3":3,"4":9,"7":1},"UA":{"0":9,"3":1},"UG":{"0":3,"3":1,"7":1},"US":{"1":1,"5":5},"UY":{"0":2,"1":1},"UZ":{"0":3,"2":6,"3":2,"4":2,"6":1},"VC":{"0":1,"1":1},"VE":{"0":20,"3":1,"4":1,"6":1,"7":2},"VG":{"0":1,"1":1},"VI":{"0":4,"1":1},"VN":{"0":4,"2":1,"3":2,"6":1,"-1":2},"VU":{"0":1,"1":1},"WF":{"0":3,"1":1},"WS":{"0":3},"YE":{"0":2,"1":1},"ZA":{"0":5,"1":1},"ZM":{"0":3,"1":1},"ZW":{"0":9,"1":1}},"reconstruction_err":19.806,"sweep":[{"coherence_npmi":0.7256710115023557,"k":8,"reconstruction_err":19.80643389464063},{"coherence_npmi":0.707084073351995,"k":10,"reconstruction_err":19.352963515789963},{"coherence_npmi":0.6991950793138986,"k":12,"reconstruction_err":18.947921172306053},{"coherence_npmi":0.7149009096222342,"k":14,"reconstruction_err":18.611023140815835},{"coherence_npmi":0.7001677816197502,"k":16,"reconstruction_err":18.325022888330935},{"coherence_npmi":0.7014240224744589,"k":18,"reconstruction_err":18.015352215414264},{"coherence_npmi":0.6864465217730327,"k":20,"reconstruction_err":17.715883289452993},{"coherence_npmi":0.6942565767202332,"k":22,"reconstruction_err":17.42717062649314},{"coherence_npmi":0.6792592113060967,"k":24,"reconstruction_err":17.148929924583072}],"topics":[{"label":"Connectivity disruption (IODA)","n_docs":765,"sample_docs":[{"country_code":"VE","first_seen":"2026-05-20T20:30:00Z","incident_id":"d879efff90d7","readable_id":"VE-2026-0215","title":"Internet connectivity disruption in Venezuela","weight":0.201},{"country_code":"FI","first_seen":"2026-05-20T12:40:00Z","incident_id":"584caddec2f8","readable_id":"FI-2026-0005","title":"Internet connectivity disruption in Finland","weight":0.201},{"country_code":"IQ","first_seen":"2026-05-20T03:00:00Z","incident_id":"4e0d82d493b1","readable_id":"IQ-2026-0119","title":"Internet connectivity disruption in Iraq","weight":0.201},{"country_code":"BJ","first_seen":"2026-05-19T13:30:00Z","incident_id":"2b053516a821","readable_id":"BJ-2026-0015","title":"Internet connectivity disruption in Benin","weight":0.201},{"country_code":"VE","first_seen":"2026-05-19T05:22:00Z","incident_id":"a6013feabbe0","readable_id":"VE-2026-0212","title":"Internet connectivity disruption in Venezuela","weight":0.201}],"top_countries":[{"country_code":"VE","n":20},{"country_code":"IR","n":18},{"country_code":"ID","n":18},{"country_code":"TT","n":17},{"country_code":"IN","n":14},{"country_code":"NG","n":14},{"country_code":"MX","n":13},{"country_code":"SI","n":12},{"country_code":"IQ","n":10},{"country_code":"FR","n":10}],"top_words":["connectivity","disruption connectivity","drop alerts","connectivity disruption","connectivity drop","drop","recorded","alerts recorded","alerts","disruption","honduras","nepal"],"topic_id":0},{"label":"Connectivity disruption (IODA)","n_docs":157,"sample_docs":[{"country_code":"CK","first_seen":"2026-03-03T10:15:00Z","incident_id":"42906ca08a23","readable_id":"CK-2026-0001","title":"Network disruption detected in CK","weight":0.3285},{"country_code":"FM","first_seen":"2026-03-03T10:15:00Z","incident_id":"78f7bf42df5b","readable_id":"FM-2026-0001","title":"Network disruption detected in FM","weight":0.3285},{"country_code":"VC","first_seen":"2026-03-03T10:15:00Z","incident_id":"795c5bc36b5b","readable_id":"VC-2026-0001","title":"Network disruption detected in VC","weight":0.3285},{"country_code":"TW","first_seen":"2026-02-28T14:28:00Z","incident_id":"2e3500111beb","readable_id":"TW-2026-0001","title":"Network disruption detected in TW","weight":0.3285},{"country_code":"KR","first_seen":"2026-02-28T14:27:00Z","incident_id":"3260b720c37e","readable_id":"KR-2026-0001","title":"Network disruption detected in KR","weight":0.3285}],"top_countries":[{"country_code":"SN","n":2},{"country_code":"HK","n":2},{"country_code":"PH","n":2},{"country_code":"KG","n":2},{"country_code":"QA","n":2},{"country_code":"CM","n":2},{"country_code":"BF","n":2},{"country_code":"TG","n":2},{"country_code":"ES","n":2},{"country_code":"AF","n":2}],"top_words":["network disruption","network","drop alerts","alerts","connectivity drop","recorded","disruption","drop","alerts recorded","connectivity","disruption connectivity","ca"],"topic_id":1},{"label":"Social media platform blocks","n_docs":51,"sample_docs":[{"country_code":"MA","first_seen":"2026-05-20T00:00:00Z","incident_id":"3a065a253749","readable_id":"MA-2026-0094","title":"Internet censorship detected in Morocco","weight":0.3374},{"country_code":"KH","first_seen":"2026-03-01T00:00:00Z","incident_id":"50360fdec97d","readable_id":"KH-2026-0014","title":"Internet censorship detected in Cambodia","weight":0.3374},{"country_code":"JO","first_seen":"2026-05-20T00:00:00Z","incident_id":"95088ef2a5fe","readable_id":"JO-2026-0101","title":"Internet censorship detected in Jordan","weight":0.3296},{"country_code":"UZ","first_seen":"2026-05-20T00:00:00Z","incident_id":"035bd7ed8c63","readable_id":"UZ-2026-0074","title":"Internet censorship detected in Uzbekistan","weight":0.3296},{"country_code":"JO","first_seen":"2026-05-10T00:00:00Z","incident_id":"a0dd7c0002b0","readable_id":"JO-2026-0091","title":"Internet censorship detected in Jordan","weight":0.3296}],"top_countries":[{"country_code":"UZ","n":6},{"country_code":"JO","n":5},{"country_code":"NI","n":4},{"country_code":"SY","n":4},{"country_code":"AE","n":3},{"country_code":"NG","n":2},{"country_code":"QA","n":2},{"country_code":"DZ","n":2},{"country_code":"KW","n":2},{"country_code":"CU","n":2}],"top_words":["anomalous","blocking probes","probes anomalous","dns","dns blocking","probes","blocking","com","anomalous tiktok","tiktok com","tiktok","anomalous bbc"],"topic_id":2},{"label":"Sustained activity / repeated alerts","n_docs":53,"sample_docs":[{"country_code":"JO","first_seen":"2026-05-03T20:50:00Z","incident_id":"d73e0a12f149","readable_id":"JO-2026-0083","title":"Internet connectivity disruption in Jordan","weight":0.368},{"country_code":"AZ","first_seen":"2026-04-30T20:20:00Z","incident_id":"1a6f171933b0","readable_id":"AZ-2026-0132","title":"Internet connectivity disruption in Azerbaijan","weight":0.368},{"country_code":"EG","first_seen":"2026-04-28T08:10:00Z","incident_id":"5d3463455ef6","readable_id":"EG-2026-0167","title":"Internet connectivity disruption in Egypt","weight":0.368},{"country_code":"PK","first_seen":"2026-04-27T01:10:00Z","incident_id":"2b17bcd18f45","readable_id":"PK-2026-0157","title":"Internet connectivity disruption in Pakistan","weight":0.368},{"country_code":"TZ","first_seen":"2026-04-26T11:25:00Z","incident_id":"16d58f2c691f","readable_id":"TZ-2026-0043","title":"Internet connectivity disruption in Tanzania","weight":0.368}],"top_countries":[{"country_code":"AZ","n":3},{"country_code":"PK","n":3},{"country_code":"TZ","n":3},{"country_code":"EG","n":2},{"country_code":"UZ","n":2},{"country_code":"IQ","n":2},{"country_code":"SY","n":2},{"country_code":"IR","n":2},{"country_code":"GA","n":2},{"country_code":"MA","n":2}],"top_words":["confirms activity","confirms","activity","recorded confirms","activity confirms","disruption connectivity","ga","np","tm","ma","kh","tr"],"topic_id":3},{"label":"HTTP/TLS probe timeouts","n_docs":48,"sample_docs":[{"country_code":"TZ","first_seen":"2026-05-05T00:00:00Z","incident_id":"2eab618944bd","readable_id":"TZ-2026-0048","title":"Internet censorship detected in Tanzania","weight":0.4053},{"country_code":"TZ","first_seen":"2026-04-29T00:00:00Z","incident_id":"a40e6f9f13e9","readable_id":"TZ-2026-0046","title":"Internet censorship detected in Tanzania","weight":0.4053},{"country_code":"TZ","first_seen":"2026-04-17T00:00:00Z","incident_id":"125d16bb8532","readable_id":"TZ-2026-0036","title":"Internet censorship detected in Tanzania","weight":0.4053},{"country_code":"TZ","first_seen":"2026-04-14T00:00:00Z","incident_id":"5a219356e741","readable_id":"TZ-2026-0034","title":"Internet censorship detected in Tanzania","weight":0.4053},{"country_code":"TZ","first_seen":"2026-04-12T00:00:00Z","incident_id":"79f37c8536e2","readable_id":"TZ-2026-0033","title":"Internet censorship detected in Tanzania","weight":0.4053}],"top_countries":[{"country_code":"TZ","n":9},{"country_code":"PK","n":6},{"country_code":"AZ","n":4},{"country_code":"BD","n":4},{"country_code":"RU","n":4},{"country_code":"BY","n":4},{"country_code":"MM","n":4},{"country_code":"RW","n":2},{"country_code":"KZ","n":2},{"country_code":"EG","n":2}],"top_words":["blocked","probes blocked","probes","blocking timeout","timeout probes","timeout","blocking","https blocking","https","http","com","http blocking"],"topic_id":4},{"label":"Connectivity disruption (IODA)","n_docs":15,"sample_docs":[{"country_code":"GB","first_seen":"2026-05-16T06:38:00Z","incident_id":"0d563d3feb1a","readable_id":"GB-2026-0039","title":"Internet connectivity disruption in United Kingdom","weight":0.4648},{"country_code":"US","first_seen":"2026-05-14T11:20:00Z","incident_id":"3747ccc2ba2f","readable_id":"US-2026-0057","title":"Internet connectivity disruption in United States","weight":0.4648},{"country_code":"GB","first_seen":"2026-05-14T10:03:00Z","incident_id":"105c33f2a396","readable_id":"GB-2026-0037","title":"Internet connectivity disruption in United Kingdom","weight":0.4648},{"country_code":"GB","first_seen":"2026-05-03T20:50:00Z","incident_id":"7f6202bc4ce9","readable_id":"GB-2026-0033","title":"Internet connectivity disruption in United Kingdom","weight":0.4648},{"country_code":"US","first_seen":"2026-05-03T20:50:00Z","incident_id":"9322a04e780b","readable_id":"US-2026-0056","title":"Internet connectivity disruption in United States","weight":0.4648}],"top_countries":[{"country_code":"GB","n":8},{"country_code":"US","n":5},{"country_code":"GA","n":1},{"country_code":"SS","n":1}],"top_words":["united","drop united","united connectivity","disruption united","united alerts","connectivity","connectivity disruption","connectivity drop","alerts","disruption","recorded","drop"],"topic_id":5},{"label":"Social media platform blocks","n_docs":40,"sample_docs":[{"country_code":"BY","first_seen":"2026-02-04T00:00:00Z","incident_id":"b4448afabd1f","readable_id":"BY-2026-0004","title":"DNS blocking in BY: bbc.com, facebook.com, google.com, instagram.com, medium.com +13 more","weight":0.4161},{"country_code":"EG","first_seen":"2026-02-04T00:00:00Z","incident_id":"954953b60577","readable_id":"EG-2026-0005","title":"DNS blocking in EG: bbc.com, facebook.com, google.com, instagram.com, medium.com +13 more","weight":0.4161},{"country_code":"SA","first_seen":"2026-02-04T00:00:00Z","incident_id":"6114560ee834","readable_id":"SA-2026-0004","title":"DNS blocking in SA: bbc.com, facebook.com, google.com, instagram.com, medium.com +13 more","weight":0.4155},{"country_code":"TR","first_seen":"2026-02-04T00:00:00Z","incident_id":"da828a93639c","readable_id":"TR-2026-0006","title":"DNS blocking in TR: bbc.com, facebook.com, google.com, instagram.com, medium.com +13 more","weight":0.4155},{"country_code":"VN","first_seen":"2026-02-04T00:00:00Z","incident_id":"b8d86eed3123","readable_id":"VN-2026-0004","title":"DNS blocking in VN: bbc.com, facebook.com, google.com, instagram.com, medium.com +13 more","weight":0.4155}],"top_countries":[{"country_code":"PK","n":5},{"country_code":"CN","n":4},{"country_code":"MM","n":3},{"country_code":"EG","n":3},{"country_code":"IR","n":3},{"country_code":"TR","n":3},{"country_code":"AE","n":2},{"country_code":"KW","n":2},{"country_code":"IQ","n":2},{"country_code":"RU","n":2}],"top_words":["com","blocking","dns","dns blocking","blocking domains","censoredplanet","domains","instagram","com censoredplanet","facebook","instagram com","facebook com"],"topic_id":6},{"label":"OONI anomaly burst","n_docs":47,"sample_docs":[{"country_code":"RU","first_seen":"2026-05-01T00:00:00Z","incident_id":"7c495bd2f057","readable_id":"RU-2026-0216","title":"Sustained censorship in RU (2026-05)","weight":0.4536},{"country_code":"RU","first_seen":"2026-01-01T00:00:00Z","incident_id":"f54c9f561e14","readable_id":"RU-2026-0010","title":"Sustained censorship in RU (2026-01)","weight":0.4536},{"country_code":"RU","first_seen":"2023-12-29T00:00:00Z","incident_id":"8a5d97b861ac","readable_id":"RU-2023-0006","title":"Sustained censorship in RU (2023-12)","weight":0.4536},{"country_code":"RU","first_seen":"2023-01-01T00:00:00Z","incident_id":"86770df6794a","readable_id":"RU-2023-0004","title":"Sustained censorship in RU (2023-01)","weight":0.4536},{"country_code":"RU","first_seen":"2022-02-21T00:00:00Z","incident_id":"d2f257f3e17e","readable_id":"RU-2022-0002","title":"Sustained censorship in RU (2022-02)","weight":0.4536}],"top_countries":[{"country_code":"RU","n":9},{"country_code":"IR","n":8},{"country_code":"KZ","n":3},{"country_code":"PK","n":3},{"country_code":"IN","n":3},{"country_code":"GB","n":2},{"country_code":"VE","n":2},{"country_code":"SD","n":2},{"country_code":"ET","n":2},{"country_code":"MM","n":2}],"top_words":["ooni","anomaly rate","rate","anomaly","shutdown","sustained","network averaging","averaging","elevated network","averaging anomaly","days","days elevated"],"topic_id":7},{"label":"Unlabeled (low signal)","n_docs":19,"sample_docs":[],"top_countries":[],"top_words":[],"topic_id":-1}],"trained_at":"2026-05-21T12:56:38.360715Z","vocab_size":623,"_voidly_pay":{"claim_did":"https://voidly.ai/pay/claim","for_builders":"https://voidly.ai/pay/for-builders","marketplace":"https://api.voidly.ai/v1/pay/marketplace","live_demo":"https://huggingface.co/spaces/emperor-mew/voidly-pay","universal_proxy":{"url":"https://api.voidly.ai/v1/pay/proxy","example":"https://api.voidly.ai/v1/pay/proxy?u=<https-url>&to=did:voidly:<your-did>&price=0.01","page":"https://voidly.ai/pay/proxy","note":"Paywall any public HTTPS URL with one query param. No SDK install required."},"install":{"typescript":"npm install @voidly/pay","python":"pip install voidly-pay","langchain":"pip install voidly-pay-langchain","vercel_ai":"npm install @voidly/pay-vercel-ai","mcp":"npx @voidly/pay-mcp","cli":"npm install -g @voidly/pay-cli"},"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."}}