{"openapi":"3.1.0","info":{"title":"Cipher API","version":"0.1.0","description":"Classical/historical cipher tools: real working Caesar, Vigenère, Atbash, ROT13, rail fence and simple substitution encode/decode, frequency analysis, historical background and a glossary. Educational only, not a security tool.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://cipher.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/cipher/docs"},"termsOfService":"https://connectorbay.com/cipher/terms"},"servers":[{"url":"https://cipher.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/cipher/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/caesar_cipher":{"post":{"operationId":"caesar_cipher","summary":"Caesar (shift) cipher: the oldest cipher with a securely documented historical user — Julius Caesar,","description":"Caesar (shift) cipher: the oldest cipher with a securely documented historical user — Julius Caesar,\n    per Suetonius, reportedly used a shift of 3 for military messages. Every letter moves a fixed number of\n    places through the alphabet; non-letters are left alone. Use for \"caesar cipher shift 7 on hello\",\n    \"decode this caesar cipher\", \"brute force this shift cipher\". Historical/educational only.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Text to encode or decode.","title":"Text","type":"string"},"mode":{"default":"encode","description":"encode | decode","title":"Mode","type":"string"},"shift":{"anyOf":[{"maximum":25,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Shift amount, 0-25. Encoding defaults to 3 (Julius Caesar's own reported shift) if omitted. Decoding with no shift brute-forces all 25 shifts instead, ranked by how English-like each result looks.","title":"Shift"}},"required":["text"],"title":"caesar_cipherArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/vigenere_cipher":{"post":{"operationId":"vigenere_cipher","summary":"Vigenère cipher: a polyalphabetic cipher that shifts each letter by an amount from a repeating","description":"Vigenère cipher: a polyalphabetic cipher that shifts each letter by an amount from a repeating\n    keyword instead of one fixed amount, defeating simple frequency analysis. First described by Giovan\n    Battista Bellaso in 1553 (misattributed to Blaise de Vigenère in the 19th century); nicknamed \"le\n    chiffre indéchiffrable\" for resisting cryptanalysis for roughly three centuries, until Kasiski published\n    a general break in 1863. Use for \"vigenere encode ATTACKATDAWN with key LEMON\". Historical/educational\n    only.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Text to encode or decode.","title":"Text","type":"string"},"key":{"description":"Keyword (letters only matter; repeats to match the text's length).","examples":["LEMON","SECRET"],"minLength":1,"title":"Key","type":"string"},"mode":{"default":"encode","description":"encode | decode","title":"Mode","type":"string"}},"required":["text","key"],"title":"vigenere_cipherArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/atbash_transform":{"post":{"operationId":"atbash_transform","summary":"Atbash cipher: one of the oldest known ciphers, reversing the alphabet (A<->Z, B<->Y, ...). Attested","description":"Atbash cipher: one of the oldest known ciphers, reversing the alphabet (A<->Z, B<->Y, ...). Attested\n    in the Hebrew Bible (Jeremiah's \"Sheshach\" for Babylon). Self-inverse — the same call both encodes and\n    decodes, since applying it twice returns the original text. It has no key at all, so it never offered\n    real secrecy even historically. Use for \"atbash this text\". Historical/educational only.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Text to transform.","title":"Text","type":"string"}},"required":["text"],"title":"atbash_transformArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/rot13_transform":{"post":{"operationId":"rot13_transform","summary":"ROT13: a Caesar cipher with a fixed shift of 13, popularized on Usenet in the early 1980s to hide","description":"ROT13: a Caesar cipher with a fixed shift of 13, popularized on Usenet in the early 1980s to hide\n    spoilers, punchlines and puzzle answers — never intended as real secrecy. Self-inverse — because the\n    alphabet has 26 letters, applying ROT13 twice returns the original text, so the same call both encodes\n    and decodes. Use for \"rot13 this joke\". Historical/educational only, not a privacy tool.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Text to transform.","title":"Text","type":"string"}},"required":["text"],"title":"rot13_transformArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/rail_fence_cipher":{"post":{"operationId":"rail_fence_cipher","summary":"Rail fence (zigzag) cipher: a transposition cipher that rearranges letters — rather than substituting","description":"Rail fence (zigzag) cipher: a transposition cipher that rearranges letters — rather than substituting\n    them — by writing the text in a zigzag across a chosen number of rails and reading it off rail by rail.\n    Weak by design: an attacker just tries every plausible rail count. Use for \"rail fence encode with 4\n    rails\", \"decode this zigzag cipher, 3 rails\". Historical/educational only.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Text to encode or decode.","title":"Text","type":"string"},"rails":{"default":3,"description":"Number of zigzag rails.","maximum":20,"minimum":2,"title":"Rails","type":"integer"},"mode":{"default":"encode","description":"encode | decode","title":"Mode","type":"string"}},"required":["text"],"title":"rail_fence_cipherArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/substitution_cipher":{"post":{"operationId":"substitution_cipher","summary":"Simple substitution cipher: the general family Caesar and Atbash both belong to — every letter maps","description":"Simple substitution cipher: the general family Caesar and Atbash both belong to — every letter maps\n    to a different letter via a fixed key, with 26! possible keys. Looks unbreakable at a glance, but falls\n    to frequency analysis (see the frequency_analysis tool), first described by the 9th-century polymath\n    Al-Kindi. Use for \"substitution cipher with keyword SECRET\", \"decode this with key <26 letters>\".\n    Historical/educational only.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Text to encode or decode.","title":"Text","type":"string"},"key":{"description":"Either a full 26-letter substitution alphabet (a permutation of A-Z, used directly) or a memorable keyword (e.g. 'SECRET'), expanded into one the classic way: the keyword's unique letters, then the rest of the alphabet in order.","examples":["SECRET","QWERTYUIOPASDFGHJKLZXCVBNM"],"minLength":1,"title":"Key","type":"string"},"mode":{"default":"encode","description":"encode | decode","title":"Mode","type":"string"}},"required":["text","key"],"title":"substitution_cipherArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/frequency_analysis":{"post":{"operationId":"frequency_analysis","summary":"Counts how often each letter appears in a text and compares it to standard English letter","description":"Counts how often each letter appears in a text and compares it to standard English letter\n    frequencies — the classical cryptanalysis technique first described by the 9th-century Arab polymath\n    Al-Kindi, and still the standard way to attack a Caesar or simple-substitution cipher by hand. Most\n    informative on 50+ letters of ordinary English; not useful against polyalphabetic ciphers like Vigenère.\n    Use for \"run frequency analysis on this ciphertext\", \"what letter shows up most in this text\".\n    Historical/educational only.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"text":{"description":"Text (ciphertext or plaintext) to analyze.","minLength":1,"title":"Text","type":"string"}},"required":["text"],"title":"frequency_analysisArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cipher_info":{"post":{"operationId":"cipher_info","summary":"Verified historical background for a named classical cipher: who's credited with it, when, how it","description":"Verified historical background for a named classical cipher: who's credited with it, when, how it\n    works, and (where known) who broke it and how. Includes Enigma as historical context only — it's a\n    WWII-era electromechanical machine, not one of this connector's hand-computable ciphers, so there's no\n    encode/decode tool for it. Use for \"who actually invented the vigenere cipher\", \"history of the caesar\n    cipher\", \"what was enigma\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"caesar | vigenere | atbash | rot13 | rail_fence | substitution | enigma. Omit to list every entry.","title":"Name"}},"title":"cipher_infoArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cipher_glossary":{"post":{"operationId":"cipher_glossary","summary":"Definitions of common cryptography terms (plaintext, ciphertext, key, cipher, monoalphabetic,","description":"Definitions of common cryptography terms (plaintext, ciphertext, key, cipher, monoalphabetic,\n    polyalphabetic, cryptanalysis, frequency analysis, brute-force attack, Kasiski examination, ...). Use\n    for \"what does ciphertext mean\", \"define frequency analysis\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"cipher_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}