{"openapi":"3.1.0","info":{"title":"Text Similarity","version":"1.0.0","description":"String and text comparison: edit distance, Jaro-Winkler, LCS, n-gram, cosine, Soundex, Metaphone, diff and fuzzy ranking. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Text Similarity: String and text comparison: edit distance, Jaro-Winkler, LCS, n-gram, cosine, Soundex, Metaphone, diff and fuzzy ranking. Use /edit-distance for Levenshtein and Damerau-Levenshtein, /jaro-winkler for Jaro and Jaro-Winkler, /lcs for longest common subsequence and substring, /hamming for equal-length strings, /ngram-overlap for Dice and Jaccard, /cosine-tokens for word-count cosine, /soundex and /metaphone for phonetic keys, /text-diff for line or word edits, /fuzzy-rank to rank up to 50 candidates against a query. 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-similarity.x402tookit.com"}],"paths":{"/cosine-tokens":{"get":{"operationId":"cosine_tokens","summary":"Cosine similarity of the word-count vectors of two texts, with shared terms and vector norms.","description":"Cosine similarity of the word-count vectors of two texts, with shared terms and vector norms.","tags":["text","cosine","bag-of-words","tokens","similarity"],"parameters":[{"name":"a","in":"query","required":true,"description":"First text, up to 2000 characters","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second text, up to 2000 characters","schema":{"type":"string"}},{"name":"ignoreCase","in":"query","required":false,"description":"true (default) lowercases both texts first","schema":{"type":"boolean"}}],"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"}},"tokensA":{"type":["null","number"]},"tokensB":{"type":["null","number"]},"distinctA":{"type":["null","number"]},"distinctB":{"type":["null","number"]},"sharedTerms":{"type":["null","number"]},"dot":{"type":["null","number"]},"normA":{"type":["null","number"]},"normB":{"type":["null","number"]},"cosine":{"type":["null","number"]},"ignoreCase":{"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":"SIMILAR","summary":"Cosine 0.8165 over 3 shared distinct words (3 and 5 distinct).","reasons":["Cosine = dot product / (norm A * norm B) of word-count vectors. SIMILAR means 0.7 or more, a convenience band. Identical word counts in any order give 1."],"tokensA":3,"tokensB":6,"distinctA":3,"distinctB":5,"sharedTerms":3,"dot":4,"normA":1.7321,"normB":2.8284,"cosine":0.8165,"ignoreCase":true,"degraded":false,"notChecked":["no stop-word removal, stemming or IDF weighting: raw word counts only","word order and meaning","…1 more"],"source":"computed locally (term-frequency cosine)","asOf":"2026-10-12T00:50:06.339Z","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-similarity.x402tookit.com/cosine-tokens"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/cosine-tokens"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/cosine-tokens"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/cosine-tokens"}}]}}},"/edit-distance":{"get":{"operationId":"edit_distance","summary":"Levenshtein and Damerau-Levenshtein edit distance (restricted and unrestricted) between two texts, with a 0 to 1 similarity.","description":"Levenshtein and Damerau-Levenshtein edit distance (restricted and unrestricted) between two texts, with a 0 to 1 similarity.","tags":["text","levenshtein","edit-distance","damerau","similarity"],"parameters":[{"name":"a","in":"query","required":true,"description":"First text, up to 2000 characters","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second text, up to 2000 characters","schema":{"type":"string"}},{"name":"ignoreCase","in":"query","required":false,"description":"true to compare case-insensitively (default false: Kitten and kitten differ by 1)","schema":{"type":"boolean"}}],"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"}},"lengthA":{"type":["null","number"]},"lengthB":{"type":["null","number"]},"levenshtein":{"type":["null","number"]},"damerauOsa":{"type":["null","number"]},"damerauUnrestricted":{"type":["null","number"]},"similarity":{"type":["null","number"]},"ignoreCase":{"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":"PARTLY_SIMILAR","summary":"Levenshtein distance 3, similarity 0.5714 (lengths 6 and 7).","reasons":["Verdict bands on Levenshtein similarity: IDENTICAL at distance 0, CLOSE at 0.8 or more, PARTLY_SIMILAR at 0.5 or more, otherwise DISTANT. The bands are a convenience, not a standard."],"lengthA":6,"lengthB":7,"levenshtein":3,"damerauOsa":3,"damerauUnrestricted":3,"similarity":0.5714,"ignoreCase":false,"degraded":false,"notChecked":["meaning: edit distance counts character edits, not whether two texts mean the same","grapheme clusters: compared by Unicode code point, so an accented letter written as two code points counts as two","…1 more"],"source":"computed locally (Levenshtein 1965; Damerau 1964; Lowrance and Wagner 1975)","asOf":"2026-10-12T00:50:06.605Z","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-similarity.x402tookit.com/edit-distance"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/edit-distance"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/edit-distance"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/edit-distance"}}]}}},"/fuzzy-rank":{"get":{"operationId":"fuzzy_rank","summary":"Rank up to 50 candidates against a query by Jaro-Winkler, Levenshtein, Dice or cosine, best first, with scores.","description":"Rank up to 50 candidates against a query by Jaro-Winkler, Levenshtein, Dice or cosine, best first, with scores.","tags":["text","fuzzy","ranking","search","matching"],"parameters":[{"name":"query","in":"query","required":true,"description":"The text to match, up to 200 characters","schema":{"type":"string"}},{"name":"candidates","in":"query","required":true,"description":"Up to 50 candidates separated by | or newlines, or a JSON array of strings; 200 characters each","schema":{"type":"string"}},{"name":"scorer","in":"query","required":false,"description":"jaro-winkler (default), levenshtein, dice (character bigram set) or cosine (word counts)","schema":{"type":"string","enum":["jaro-winkler","levenshtein","dice","cosine"]}},{"name":"limit","in":"query","required":false,"description":"Return only the top N, 1 to 50 (default all)","schema":{"type":"integer"}},{"name":"minScore","in":"query","required":false,"description":"Drop candidates scoring below this, 0 to 1 (default 0)","schema":{"type":"number"}},{"name":"ignoreCase","in":"query","required":false,"description":"true (default) lowercases query and candidates","schema":{"type":"boolean"}}],"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"}},"scorer":{"type":["null","string"]},"query":{"type":["null","string"]},"candidateCount":{"type":["null","number"]},"returned":{"type":["null","number"]},"ranked":{"type":["array","null"],"items":{"type":"object","properties":{"rank":{"type":["null","number"]},"candidate":{"type":["null","string"]},"index":{"type":["null","number"]},"score":{"type":["null","number"]}}}},"ignoreCase":{"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":"STRONG_MATCH","summary":"Best of 4 candidates: \"John Smith\" at 0.9733 (jaro-winkler).","reasons":["Verdict bands on the top score: EXACT_MATCH_PRESENT at 1, STRONG_MATCH at 0.85 or more, WEAK_MATCH at 0.6 or more, otherwise NO_CLOSE_MATCH. The bands are a convenience, not a standard. Ties keep inpu…"],"scorer":"jaro-winkler","query":"jon smith","candidateCount":4,"returned":4,"ranked":[{"rank":1,"candidate":"John Smith","index":0,"score":0.9733},{"rank":2,"candidate":"Jon Smythe","index":1,"score":0.9378}],"ignoreCase":true,"degraded":false,"notChecked":["meaning: ranking is by surface similarity only","candidates over 50 or 200 characters are refused, not truncated","…2 more"],"source":"computed locally (algorithms as in the other endpoints of this shelf)","asOf":"2026-10-12T00:50:06.869Z","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-similarity.x402tookit.com/fuzzy-rank"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/fuzzy-rank"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/fuzzy-rank"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/fuzzy-rank"}}]}}},"/hamming":{"get":{"operationId":"hamming","summary":"Hamming distance between two equal-length strings (text or binary), with the differing positions. Unequal lengths are undefined.","description":"Hamming distance between two equal-length strings (text or binary), with the differing positions. Unequal lengths are undefined.","tags":["text","hamming","distance","binary","error-detection"],"parameters":[{"name":"a","in":"query","required":true,"description":"First string, up to 2000 characters","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second string of the same length, up to 2000 characters","schema":{"type":"string"}},{"name":"ignoreCase","in":"query","required":false,"description":"true to compare case-insensitively (default false)","schema":{"type":"boolean"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"]},"lengthA":{"type":["null","number"]},"lengthB":{"type":["null","number"]},"distance":{"type":["null","number"]},"positions":{"type":["array","null"],"items":{"type":"number"}},"similarity":{"type":["null","number"]},"ignoreCase":{"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":"DIFFERENT","summary":"Hamming distance 3 over 7 positions.","reasons":[],"lengthA":7,"lengthB":7,"distance":3,"positions":[2,3],"similarity":0.5714,"ignoreCase":false,"degraded":false,"notChecked":["insertions and deletions: Hamming distance only counts substitutions, use /edit-distance for strings of different length","grapheme clusters: compared by Unicode code point"],"source":"computed locally (Hamming 1950)","asOf":"2026-10-12T00:50:07.130Z","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-similarity.x402tookit.com/hamming"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/hamming"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/hamming"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/hamming"}}]}}},"/jaro-winkler":{"get":{"operationId":"jaro_winkler","summary":"Jaro and Jaro-Winkler similarity of two short strings (names), with matches, transpositions and prefix boost.","description":"Jaro and Jaro-Winkler similarity of two short strings (names), with matches, transpositions and prefix boost.","tags":["text","jaro-winkler","names","similarity","record-linkage"],"parameters":[{"name":"a","in":"query","required":true,"description":"First string, up to 2000 characters","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second string, up to 2000 characters","schema":{"type":"string"}},{"name":"ignoreCase","in":"query","required":false,"description":"true to compare case-insensitively (default false)","schema":{"type":"boolean"}},{"name":"prefixScale","in":"query","required":false,"description":"Winkler prefix scale p, 0 to 0.25 (default 0.1)","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"}},"jaro":{"type":["null","number"]},"jaroWinkler":{"type":["null","number"]},"matches":{"type":["null","number"]},"transpositions":{"type":["null","number"]},"commonPrefix":{"type":["null","number"]},"prefixScale":{"type":["null","number"]},"lengthA":{"type":["null","number"]},"lengthB":{"type":["null","number"]},"ignoreCase":{"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":"VERY_SIMILAR","summary":"Jaro 0.9444, Jaro-Winkler 0.9611 (6 matches, 1 transpositions, common prefix 3).","reasons":["Match window is floor(max length / 2) - 1. Winkler boost applies only when Jaro is above 0.7, with a common prefix capped at 4 characters. Verdict bands (0.9 and 0.7) are a convenience, not a standard…"],"jaro":0.9444,"jaroWinkler":0.9611,"matches":6,"transpositions":1,"commonPrefix":3,"prefixScale":0.1,"lengthA":6,"lengthB":6,"ignoreCase":false,"degraded":false,"notChecked":["meaning, nicknames or transliteration: a high score does not prove two names are the same person or company","the usual caveat that Jaro-Winkler favours shared prefixes","…1 more"],"source":"computed locally (Jaro 1989; Winkler 1990)","asOf":"2026-10-12T00:50:07.393Z","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-similarity.x402tookit.com/jaro-winkler"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/jaro-winkler"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/jaro-winkler"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/jaro-winkler"}}]}}},"/lcs":{"get":{"operationId":"lcs","summary":"Longest common subsequence and longest common substring of two texts, with their lengths and a 0 to 1 ratio.","description":"Longest common subsequence and longest common substring of two texts, with their lengths and a 0 to 1 ratio.","tags":["text","lcs","subsequence","substring","similarity"],"parameters":[{"name":"a","in":"query","required":true,"description":"First text, up to 2000 characters","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second text, up to 2000 characters","schema":{"type":"string"}},{"name":"ignoreCase","in":"query","required":false,"description":"true to compare case-insensitively (default false)","schema":{"type":"boolean"}}],"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"}},"subsequenceLength":{"type":["null","number"]},"subsequence":{"type":["null","string"]},"substringLength":{"type":["null","number"]},"substring":{"type":["null","string"]},"substringStartA":{"type":["null","number"]},"substringStartB":{"type":["null","number"]},"ratio":{"type":["null","number"]},"lengthA":{"type":["null","number"]},"lengthB":{"type":["null","number"]},"ignoreCase":{"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":"SHARED","summary":"Longest common subsequence 4 (\"GTAB\"), longest common substring 1 (\"A\").","reasons":["Ratio is subsequence length divided by the longer text's length."],"subsequenceLength":4,"subsequence":"GTAB","substringLength":1,"substring":"A","substringStartA":0,"substringStartB":4,"ratio":0.5714,"lengthA":6,"lengthB":7,"ignoreCase":false,"degraded":false,"notChecked":["when several longest answers tie, only one is returned (the earliest in the first text for the substring)","meaning: shared characters are not shared ideas","…1 more"],"source":"computed locally (classic dynamic programming)","asOf":"2026-10-12T00:50:07.672Z","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-similarity.x402tookit.com/lcs"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/lcs"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/lcs"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/lcs"}}]}}},"/metaphone":{"get":{"operationId":"metaphone","summary":"Original Metaphone (Philips 1990, not Double) phonetic key of an English word, with optional second word to compare.","description":"Original Metaphone (Philips 1990, not Double) phonetic key of an English word, with optional second word to compare.","tags":["text","metaphone","phonetic","english","names"],"parameters":[{"name":"word","in":"query","required":true,"description":"An English word or name, up to 200 characters (letters only are used)","schema":{"type":"string"}},{"name":"other","in":"query","required":false,"description":"Optional second word to compare keys","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"}},"word":{"type":["null","string"]},"key":{"type":["null","string"]},"variant":{"type":["null","string"]},"other":{"type":["null","string"]},"otherKey":{"type":["null","string"]},"sameKey":{"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":"SAME_KEY","summary":"Knight is NT and Night is NT: same key.","reasons":["Variant: original Metaphone. Resolutions: duplicate letters collapse except C; initial KN GN PN WR AE drop the first letter, X becomes S, WH becomes W; digraph H consumed in CH SH PH TH GH; lone H kep…"],"word":"Knight","key":"NT","variant":"original-metaphone","other":"Night","otherKey":"NT","sameKey":true,"degraded":false,"notChecked":["Double Metaphone and Metaphone 3 are different algorithms with different keys","the published rule list is incomplete; the resolutions used are listed in the answer's reasons","…1 more"],"source":"computed locally (original Metaphone, Lawrence Philips 1990, public rule list)","asOf":"2026-10-12T00:50:07.935Z","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-similarity.x402tookit.com/metaphone"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/metaphone"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/metaphone"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/metaphone"}}]}}},"/ngram-overlap":{"get":{"operationId":"ngram_overlap","summary":"Dice and Jaccard n-gram overlap of two texts by character or word, as sets and as multisets.","description":"Dice and Jaccard n-gram overlap of two texts by character or word, as sets and as multisets.","tags":["text","ngram","dice","jaccard","similarity"],"parameters":[{"name":"a","in":"query","required":true,"description":"First text, up to 2000 characters","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second text, up to 2000 characters","schema":{"type":"string"}},{"name":"n","in":"query","required":false,"description":"Gram size 1 to 6 (default 2)","schema":{"type":"integer"}},{"name":"unit","in":"query","required":false,"description":"char (default) or word grams","schema":{"type":"string","enum":["char","word"]}},{"name":"ignoreCase","in":"query","required":false,"description":"true (default) lowercases both texts first","schema":{"type":"boolean"}}],"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"}},"n":{"type":["null","number"]},"unit":{"type":["null","string"]},"gramsA":{"type":["null","number"]},"gramsB":{"type":["null","number"]},"distinctA":{"type":["null","number"]},"distinctB":{"type":["null","number"]},"sharedDistinct":{"type":["null","number"]},"diceSet":{"type":["null","number"]},"jaccardSet":{"type":["null","number"]},"diceMultiset":{"type":["null","number"]},"jaccardMultiset":{"type":["null","number"]},"ignoreCase":{"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":"PARTIAL_OVERLAP","summary":"char 2-grams: Dice 0.25, Jaccard 0.1429 on sets (1 shared of 4 and 4 distinct).","reasons":["Set scores count each distinct gram once; multiset scores count repeats (Dice 2*shared/(grams A + grams B) with shared = sum of minimum counts; Jaccard = sum of minimums / sum of maximums). HIGH_OVERL…"],"n":2,"unit":"char","gramsA":4,"gramsB":4,"distinctA":4,"distinctB":4,"sharedDistinct":1,"diceSet":0.25,"jaccardSet":0.1429,"diceMultiset":0.25,"jaccardMultiset":0.1429,"ignoreCase":true,"degraded":false,"notChecked":["no padding with boundary markers: grams do not wrap the text edges","meaning and word order beyond the gram window","…1 more"],"source":"computed locally (Sorensen 1948, Dice 1945, Jaccard 1901)","asOf":"2026-10-12T00:50:08.198Z","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-similarity.x402tookit.com/ngram-overlap"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/ngram-overlap"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/ngram-overlap"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/ngram-overlap"}}]}}},"/soundex":{"get":{"operationId":"soundex","summary":"American Soundex code of a name (R163 for Robert), with an optional second name to test whether they sound alike.","description":"American Soundex code of a name (R163 for Robert), with an optional second name to test whether they sound alike.","tags":["text","soundex","phonetic","names","record-linkage"],"parameters":[{"name":"name","in":"query","required":true,"description":"A name or word, up to 200 characters (letters only are used; accents are stripped)","schema":{"type":"string"}},{"name":"other","in":"query","required":false,"description":"Optional second name to compare codes","schema":{"type":"string"}},{"name":"variant","in":"query","required":false,"description":"american (default; H and W are transparent) or simple (H and W separate like vowels)","schema":{"type":"string","enum":["american","simple"]}}],"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"}},"name":{"type":["null","string"]},"letters":{"type":["null","string"]},"code":{"type":["null","string"]},"variant":{"type":["null","string"]},"other":{"type":["null","string"]},"otherCode":{"type":["null","string"]},"sameCode":{"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":"SAME_CODE","summary":"Robert is R163 and Rupert is R163: same Soundex code.","reasons":["Equal Soundex codes mean the names are candidates for a match, nothing more."],"name":"Robert","letters":"ROBERT","code":"R163","variant":"american","other":"Rupert","otherCode":"R163","sameCode":true,"degraded":false,"notChecked":["pronunciation: Soundex is an English-surname heuristic, not a pronunciation model","non-Latin scripts: only A to Z are used after stripping accents","…1 more"],"source":"computed locally (US National Archives Soundex rules)","asOf":"2026-10-12T00:50:08.461Z","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-similarity.x402tookit.com/soundex"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/soundex"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/soundex"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/soundex"}}]}}},"/text-diff":{"get":{"operationId":"text_diff","summary":"Diff of two short texts into equal, deleted and inserted lines or words, with counts and a similarity ratio.","description":"Diff of two short texts into equal, deleted and inserted lines or words, with counts and a similarity ratio.","tags":["text","diff","lcs","changes","compare"],"parameters":[{"name":"a","in":"query","required":true,"description":"Original text, up to 2000 characters","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"New text, up to 2000 characters","schema":{"type":"string"}},{"name":"unit","in":"query","required":false,"description":"word (default) or line","schema":{"type":"string","enum":["word","line"]}}],"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"}},"unit":{"type":["null","string"]},"unitsA":{"type":["null","number"]},"unitsB":{"type":["null","number"]},"unchanged":{"type":["null","number"]},"removed":{"type":["null","number"]},"added":{"type":["null","number"]},"ratio":{"type":["null","number"]},"edits":{"type":["array","null"],"items":{"type":"object","properties":{"op":{"type":["null","string"]},"count":{"type":["null","number"]},"text":{"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":"CHANGED","summary":"1 word removed, 2 added, 3 unchanged.","reasons":["Similarity ratio = 2 * unchanged / (units in A + units in B), the same definition as Python difflib's ratio."],"unit":"word","unitsA":4,"unitsB":5,"unchanged":3,"removed":1,"added":2,"ratio":0.6667,"edits":[{"op":"equal","count":2,"text":"the quick"},{"op":"delete","count":1,"text":"brown"}],"degraded":false,"notChecked":["moved blocks: a moved line shows as a delete plus an insert","when several minimal diffs exist, one is returned (deletes before inserts)","…1 more"],"source":"computed locally (longest-common-subsequence diff)","asOf":"2026-10-12T00:50:08.724Z","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-similarity.x402tookit.com/text-diff"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/text-diff"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/text-diff"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://text-similarity.x402tookit.com/text-diff"}}]}}}}}