{"openapi":"3.1.0","info":{"title":"Classic Ciphers and Encodings","version":"1.0.0","description":"Caesar, Vigenere, Playfair, rail fence, Morse, NATO, Braille, Base32/58/64 and frequency analysis for puzzles and learning. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Classic Ciphers and Encodings: Caesar, Vigenere, Playfair, rail fence, Morse, NATO, Braille, Base32/58/64 and frequency analysis for puzzles and learning. Use /shift-ciphers for Caesar, ROT13, ROT47 and Atbash, /number-ciphers for A1Z26 and the Polybius square, /vigenere to encode, decode or estimate the key length of a Vigenere text, /playfair and /rail-fence for those ciphers, /morse for Morse code with timing, /nato for the NATO phonetic alphabet, /braille for grade 1 Braille, /encode-text for binary, octal, hex, decimal, Base32, Base58 and Base64, and /frequency-analysis for letter counts, index of coincidence and the likely Caesar shift. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://text-ciphers.x402tookit.com"}],"paths":{"/braille":{"get":{"operationId":"braille","summary":"Grade 1 Braille text to Unicode Braille cells and back, with number sign, capital sign and dot numbers per cell.","description":"Grade 1 Braille text to Unicode Braille cells and back, with number sign, capital sign and dot numbers per cell.","tags":["braille","accessibility","encoding","unicode"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to encode, or Braille cells to decode (up to 500 characters)","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"braille":{"type":["null","string"]},"cells":{"type":["array","null"],"items":{"type":"object","properties":{"cell":{"type":["null","string"]},"dots":{"type":["null","string"]}}}},"cellCount":{"type":["null","number"]},"skipped":{"type":["array","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"⠠⠓⠑⠇⠇⠕⠀⠼⠃⠚⠃⠋","reasons":["Grade 1 Braille: one cell per letter. Digits use a number sign then the letters a to j; capitals use a capital sign (dot 6)."],"mode":"encode","braille":"⠠⠓⠑⠇⠇⠕⠀⠼⠃⠚⠃⠋","cells":[{"cell":"⠠","dots":"6"},{"cell":"⠓","dots":"125"}],"cellCount":12,"skipped":[],"degraded":false,"notChecked":["contracted Braille (grade 2) and Unified English Braille contractions","capital word and passage indicators (each capital letter gets its own capital sign)","…2 more"],"source":"computed locally (Unicode Braille Patterns, English grade 1)","asOf":"2026-10-11T14:31:57.071Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/braille"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/braille"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/braille"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/braille"}}]}}},"/encode-text":{"get":{"operationId":"encode_text","summary":"Convert text or bytes to and from binary, octal, hex, decimal, Base32 (RFC 4648), Base58 (Bitcoin) and Base64.","description":"Convert text or bytes to and from binary, octal, hex, decimal, Base32 (RFC 4648), Base58 (Bitcoin) and Base64.","tags":["base64","base58","base32","hex","binary"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to encode, or the encoded string to decode (up to 3000 characters)","schema":{"type":"string"}},{"name":"format","in":"query","required":true,"description":"One of: binary, octal, hex, decimal, base32, base32hex, base58, base64, base64url","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}},{"name":"inputType","in":"query","required":false,"description":"For encode: text (UTF-8, default) or hex (the input is bytes written as hex)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"format":{"type":["null","string"]},"input":{"type":["null","string"]},"output":{"type":["null","string"]},"bytes":{"type":["null","number"]},"hex":{"type":["null","string"]},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"base32: MZXW6YTBOI======","reasons":["Text is encoded as UTF-8 bytes first."],"mode":"encode","format":"base32","input":"foobar","output":"MZXW6YTBOI======","bytes":6,"hex":"666f6f626172","secure":false,"degraded":false,"notChecked":["security: these are encodings anyone can reverse; none of them hides data","Base58Check checksums and Bitcoin address validation (only raw Base58)","…1 more"],"source":"computed locally (RFC 4648, Bitcoin Base58 alphabet)","asOf":"2026-10-11T14:31:57.324Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/encode-text"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/encode-text"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/encode-text"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/encode-text"}}]}}},"/frequency-analysis":{"get":{"operationId":"frequency_analysis","summary":"Letter frequencies, index of coincidence and the most likely Caesar shift of a ciphertext using English statistics.","description":"Letter frequencies, index of coincidence and the most likely Caesar shift of a ciphertext using English statistics.","tags":["frequency-analysis","cryptanalysis","index-of-coincidence","caesar"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to analyse (up to 5000 characters; 40 or more letters for a shift guess)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"letters":{"type":["null","number"]},"indexOfCoincidence":{"type":["null","number"]},"englishIC":{"type":["null","number"]},"randomIC":{"type":["null","number"]},"interpretation":{"type":["null","string"]},"frequencies":{"type":["array","null"],"items":{"type":"object","properties":{"letter":{"type":["null","string"]},"count":{"type":["null","number"]},"percent":{"type":["null","number"]},"englishPercent":{"type":["null","number"]}}}},"mostCommon":{"type":["array","null"],"items":{"type":"string"}},"likelyShift":{"type":["null","number"]},"shiftConfidenceRatio":{"type":["null","number"]},"runnerUpShift":{"type":["null","number"]},"candidatePlaintext":{"type":["null","string"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"LIKELY_CAESAR_SHIFT","summary":"IC 0.0668; most likely Caesar shift 3 (decode with shift -3). Most common: D 13.2075%, V 13.2075%, H 11.3208%, L 9.434%, W 9.434%.","reasons":["English text has an index of coincidence near 0.066; random letters near 0.038.","The shift guess minimises the chi-squared distance from English letter frequencies; confidence is the ratio of the runner-up's distance to the best."],"letters":53,"indexOfCoincidence":0.0668,"englishIC":0.0667,"randomIC":0.0385,"interpretation":"single-alphabet text (plain English or a Caesar/substitution cipher of it)","frequencies":[{"letter":"A","count":0,"percent":0,"englishPercent":8.167},{"letter":"B","count":1,"percent":1.8868,"englishPercent":1.492}],"mostCommon":["D 13.2075%","V 13.2075%","…3 more"],"likelyShift":3,"shiftConfidenceRatio":8.66,"runnerUpShift":16,"candidatePlaintext":"This is a secret message about a caesar cipher with a funny shift","degraded":false,"notChecked":["languages other than English (the shift guess assumes English letter frequencies)","texts under about 40 letters, where statistics are unreliable","…1 more"],"source":"computed locally (Lewand English letter frequencies, Friedman index of coincidence)","asOf":"2026-10-11T14:31:57.586Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/frequency-analysis"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/frequency-analysis"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/frequency-analysis"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/frequency-analysis"}}]}}},"/morse":{"get":{"operationId":"morse","summary":"Morse code encode or decode (ITU-R M.1677) with dot/dash timing in units and milliseconds at a chosen words per minute.","description":"Morse code encode or decode (ITU-R M.1677) with dot/dash timing in units and milliseconds at a chosen words per minute.","tags":["morse","encoding","timing","radio"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to encode, or Morse to decode (letters separated by spaces, words by /)","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}},{"name":"wpm","in":"query","required":false,"description":"Speed in words per minute using the PARIS standard, 1 to 60 (default 20)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"morse":{"type":["null","string"]},"text":{"type":["null","string"]},"timing":{"type":["null","object"],"properties":{"wpm":{"type":["null","number"]},"unitMs":{"type":["null","number"]},"totalUnits":{"type":["null","number"]},"totalMs":{"type":["null","number"]},"dotMs":{"type":["null","number"]},"dashMs":{"type":["null","number"]},"letterGapMs":{"type":["null","number"]},"wordGapMs":{"type":["null","number"]}}},"unsupported":{"type":["array","null"]},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"... --- ... / .--. .- .-. .. ... (77 units, 4620 ms at 20 WPM)","reasons":["Morse is an encoding, not encryption.","Timing: dot 1 unit, dash 3, gap inside a letter 1, between letters 3, between words 7; one unit = 1200 / WPM ms (PARIS = 50 units)."],"mode":"encode","morse":"... --- ... / .--. .- .-. .. ...","text":"SOS PARIS","timing":{"wpm":20,"unitMs":60,"totalUnits":77,"totalMs":4620,"dotMs":60,"dashMs":180,"letterGapMs":180,"wordGapMs":420},"unsupported":[],"secure":false,"degraded":false,"notChecked":["prosigns (SOS as one run, AR, SK) are written as ordinary letters","Farnsworth spacing or operator 'fist'","…1 more"],"source":"computed locally (ITU-R M.1677-1)","asOf":"2026-10-11T14:31:57.851Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/morse"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/morse"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/morse"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/morse"}}]}}},"/nato":{"get":{"operationId":"nato","summary":"Spell text in the NATO phonetic alphabet (Alfa, Bravo, Charlie) or decode NATO words back to letters and digits.","description":"Spell text in the NATO phonetic alphabet (Alfa, Bravo, Charlie) or decode NATO words back to letters and digits.","tags":["nato","phonetic-alphabet","spelling","icao"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to spell, or NATO words to decode (up to 500 characters)","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"words":{"type":["null","string"]},"spokenDigits":{"type":["null","object"],"properties":{"0":{"type":["null","string"]},"1":{"type":["null","string"]},"2":{"type":["null","string"]},"3":{"type":["null","string"]},"4":{"type":["null","string"]},"5":{"type":["null","string"]},"6":{"type":["null","string"]},"7":{"type":["null","string"]},"8":{"type":["null","string"]},"9":{"type":["null","string"]}}},"skipped":{"type":["array","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"Hotel Echo Lima Lima Oscar / Four Two","reasons":["Words are separated by ' / '. ICAO digits are spoken Wun, Too, Tree, Fow-er, Fife, Six, Sev-en, Ait, Nin-er."],"mode":"encode","words":"Hotel Echo Lima Lima Oscar / Four Two","spokenDigits":{"0":"Zee-ro","1":"Wun","2":"Too","3":"Tree","4":"Fow-er","5":"Fife","6":"Six","7":"Sev-en","8":"Ait","9":"Nin-er"},"skipped":[],"degraded":false,"notChecked":["characters other than letters and digits (spaces become a word break; others are skipped and listed)","national variants of the alphabet (this is the NATO/ICAO one)","…1 more"],"source":"computed locally (NATO/ICAO spelling alphabet)","asOf":"2026-10-11T14:31:58.113Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/nato"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/nato"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/nato"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/nato"}}]}}},"/number-ciphers":{"get":{"operationId":"number_ciphers","summary":"A1Z26 (A=1) and Polybius square number ciphers, both ways, with optional keyword square and ADFGX labels.","description":"A1Z26 (A=1) and Polybius square number ciphers, both ways, with optional keyword square and ADFGX labels.","tags":["a1z26","polybius","cipher","puzzle"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to encode, or numbers to decode (up to 1000 characters)","schema":{"type":"string"}},{"name":"cipher","in":"query","required":false,"description":"a1z26 (default) or polybius","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}},{"name":"key","in":"query","required":false,"description":"Polybius keyword for the square (default none: A-Z with I=J)","schema":{"type":"string"}},{"name":"labels","in":"query","required":false,"description":"Polybius row/column labels: 12345 (default) or ADFGX","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"cipher":{"type":["null","string"]},"mode":{"type":["null","string"]},"input":{"type":["null","string"]},"output":{"type":["null","string"]},"square":{"type":["array","null"],"items":{"type":"string"}},"labels":{"type":["null","string"]},"keyword":{},"unreadable":{"type":["array","null"]},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"polybius encode: 23 15 31 31 34 / 52 34 42 31 14","reasons":["Educational cipher, trivially breakable: do not use it to protect real secrets.","Pairs are row then column; words are separated by ' / '."],"cipher":"polybius","mode":"encode","input":"Hello World","output":"23 15 31 31 34 / 52 34 42 31 14","square":["ABCDE","FGHIK","…3 more"],"labels":"12345","keyword":null,"unreadable":[],"secure":false,"degraded":false,"notChecked":["security: these are substitution codes with no key strength","J is merged into I in the Polybius square (a 5x5 grid holds 25 letters)","…1 more"],"source":"computed locally (classical ciphers)","asOf":"2026-10-11T14:31:58.380Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/number-ciphers"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/number-ciphers"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/number-ciphers"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/number-ciphers"}}]}}},"/playfair":{"get":{"operationId":"playfair","summary":"Playfair cipher encode or decode with a keyword; shows the 5x5 square and the digraphs. I and J are merged.","description":"Playfair cipher encode or decode with a keyword; shows the 5x5 square and the digraphs. I and J are merged.","tags":["playfair","cipher","digraph","puzzle"],"parameters":[{"name":"text","in":"query","required":true,"description":"Plain or cipher text (up to 1000 characters)","schema":{"type":"string"}},{"name":"key","in":"query","required":true,"description":"Keyword, e.g. PLAYFAIR EXAMPLE","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"key":{"type":["null","string"]},"square":{"type":["array","null"],"items":{"type":"string"}},"digraphsIn":{"type":["array","null"],"items":{"type":"string"}},"output":{"type":["null","string"]},"outputGrouped":{"type":["null","string"]},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"playfair encode: BM OD ZB XD NA BE KU DM UI XM MO UV IF","reasons":["Educational cipher, trivially breakable: do not use it to protect real secrets.","Doubled letters in a pair get an X (or Z) between them, and an odd final letter is padded with X (or Z).","…1 more"],"mode":"encode","key":"PLAYFAIREXAMPLE","square":["PLAYF","IREXM","…3 more"],"digraphsIn":["HI","DE","…11 more"],"output":"BMODZBXDNABEKUDMUIXMMOUVIF","outputGrouped":"BM OD ZB XD NA BE KU DM UI XM MO UV IF","secure":false,"degraded":false,"notChecked":["security: Playfair is broken by digraph frequency analysis","decoding returns the padded letters (filler X or Z between doubles and at the end); removing them is a human judgement","…1 more"],"source":"computed locally (classical ciphers)","asOf":"2026-10-11T14:31:58.641Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/playfair"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/playfair"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/playfair"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/playfair"}}]}}},"/rail-fence":{"get":{"operationId":"rail_fence","summary":"Rail fence (zigzag) transposition cipher encode or decode with 2 to 20 rails; letters and digits only by default.","description":"Rail fence (zigzag) transposition cipher encode or decode with 2 to 20 rails; letters and digits only by default.","tags":["rail-fence","transposition","cipher","puzzle"],"parameters":[{"name":"text","in":"query","required":true,"description":"Plain or cipher text (up to 1000 characters)","schema":{"type":"string"}},{"name":"rails","in":"query","required":true,"description":"Number of rails, 2 to 20","schema":{"type":"integer"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}},{"name":"raw","in":"query","required":false,"description":"true to keep spaces and punctuation as characters on the fence (default: letters and digits only, upper-cased)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"rails":{"type":["null","number"]},"input":{"type":["null","string"]},"prepared":{"type":["null","string"]},"output":{"type":["null","string"]},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"rail fence (3 rails) encode: WECRLTEERDSOEEFEAOCAIVDEN","reasons":["Educational cipher, trivially breakable: do not use it to protect real secrets.","Spaces and punctuation were removed and letters upper-cased before encoding, the usual textbook convention."],"mode":"encode","rails":3,"input":"WE ARE DISCOVERED. FLEE AT ONCE","prepared":"WEAREDISCOVEREDFLEEATONCE","output":"WECRLTEERDSOEEFEAOCAIVDEN","secure":false,"degraded":false,"notChecked":["security: a rail fence has only a few hundred possible keys","offset (starting phase) variants of the cipher","…1 more"],"source":"computed locally (classical ciphers)","asOf":"2026-10-11T14:31:58.902Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/rail-fence"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/rail-fence"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/rail-fence"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/rail-fence"}}]}}},"/shift-ciphers":{"get":{"operationId":"shift_ciphers","summary":"Caesar, ROT13, ROT47, ROT5 and Atbash encode or decode for puzzles and learning. Not secure; keeps case and punctuation.","description":"Caesar, ROT13, ROT47, ROT5 and Atbash encode or decode for puzzles and learning. Not secure; keeps case and punctuation.","tags":["caesar","rot13","atbash","cipher","puzzle"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text to transform (up to 2000 characters)","schema":{"type":"string"}},{"name":"cipher","in":"query","required":false,"description":"One of caesar, rot13, rot47, atbash, rot5 (default caesar)","schema":{"type":"string"}},{"name":"shift","in":"query","required":false,"description":"Caesar shift -25 to 25 (default 3); ignored by the others","schema":{"type":"integer"}},{"name":"mode","in":"query","required":false,"description":"encode (default) or decode","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"cipher":{"type":["null","string"]},"mode":{"type":["null","string"]},"shift":{"type":["null","number"]},"input":{"type":["null","string"]},"output":{"type":["null","string"]},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"caesar (shift 3) encode: Dwwdfn dw gdzq","reasons":["Educational cipher, trivially breakable: do not use it to protect real secrets.","Decode shifts by the opposite amount."],"cipher":"caesar","mode":"encode","shift":3,"input":"Attack at dawn","output":"Dwwdfn dw gdzq","secure":false,"degraded":false,"notChecked":["security: every cipher here can be broken by hand in seconds; never use them to protect anything","characters outside A-Z, a-z (and the printable ASCII range for ROT47) pass through unchanged"],"source":"computed locally (classical ciphers)","asOf":"2026-10-11T14:31:59.167Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/shift-ciphers"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/shift-ciphers"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/shift-ciphers"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/shift-ciphers"}}]}}},"/vigenere":{"get":{"operationId":"vigenere","summary":"Vigenere cipher encode or decode with a key, or estimate the key length of a ciphertext by index of coincidence.","description":"Vigenere cipher encode or decode with a key, or estimate the key length of a ciphertext by index of coincidence.","tags":["vigenere","cipher","index-of-coincidence","puzzle"],"parameters":[{"name":"text","in":"query","required":true,"description":"Plain or cipher text (up to 3000 characters)","schema":{"type":"string"}},{"name":"key","in":"query","required":false,"description":"Key letters (required for encode and decode)","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"encode (default), decode or keylength","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"mode":{"type":["null","string"]},"key":{"type":["null","string"]},"input":{"type":["null","string"]},"output":{"type":["null","string"]},"secure":{"type":["boolean","null"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"ENCODED","summary":"vigenere encode with key LEMON: LXFOPVEFRNHR","reasons":["Educational cipher, trivially breakable: do not use it to protect real secrets.","The key advances only on letters; case and other characters are kept."],"mode":"encode","key":"LEMON","input":"ATTACKATDAWN","output":"LXFOPVEFRNHR","secure":false,"degraded":false,"notChecked":["security: Vigenere has been breakable since the 1860s","key length estimates need roughly 100 or more letters and an English-like plaintext to be reliable","…1 more"],"source":"computed locally (classical ciphers)","asOf":"2026-10-11T14:31:59.426Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/vigenere"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/vigenere"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/vigenere"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-ciphers.x402tookit.com/vigenere"}}]}}}}}