Serveur MCP

HebrewCore by baba Hebrew

com.itsbaba/hebrewcore
Éducation Santé Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Translates and verifies Hebrew, English, Russian, and other supported languages, with RTL handling, nikud, transliteration, and specialized clinical translation tools.

add_nikud
Add nikud (vowel points)
Add full nikud (vowel points) to Hebrew text, for learners, vocalized display and text-to-speech, where unvocalized Hebrew is ambiguous. English terms and numbers pass through unchanged. The result is verified: `verified: true` means removing the points gives back the input; when false, `nikud` is the input unchanged. Up to 10,000 characters. Uses the monthly character quota.
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'examples': ['שלום עולם'], 'maxLength': 10000, 'minLength': 1, 'description': 'Hebrew text to vocalize, up to 10,000 characters. English terms and numbers pass through.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['שלום עולם'], 'description': 'The input.'}, 'nikud': {'type': 'string', 'examples': ['שָׁלוֹם עוֹלָם'], 'description': 'The vocalized text, or the input unchanged when `verified` is false.'}, 'verified': {'type': 'boolean', 'examples': [True], 'description': 'True when removing the points gives back exactly the input. When false, `nikud` is the input unchanged: send it to speech unvocalized or retry.'}}}
add_terms
Add or update account terms
Add protected terms to the account, or update existing ones (matched by exact term text). Every later protected translation on the account (translate, translate_batch and the clinical tools) keeps these terms exactly as written, or uses `translations.he` / `.en` / `.ru` for that target language when set. Sending a term that already exists replaces its translations and note. Up to 2,000 terms per account, each up to 200 characters. Changes apply to new requests within 30 seconds. Free.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['terms'], 'properties': {'terms': {'type': 'array', 'items': {'type': 'object', 'required': ['term'], 'properties': {'note': {'type': ['string', 'null'], 'maxLength': 500}, 'term': {'type': 'string', 'examples': ['Optalgin'], 'maxLength': 200, 'minLength': 1}, 'translations': {'type': 'object', 'examples': [{'he': 'אופטלגין', 'ru': 'Оптальгин'}], 'properties': {'en': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'he': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'ru': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'additionalProperties': False}}}, 'maxItems': 2000, 'minItems': 1}}}
Schéma de sortie
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'terms': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'examples': ['3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f']}, 'note': {'type': ['string', 'null'], 'examples': ['paracetamol 500 mg brand'], 'description': 'Your own note, up to 500 characters.'}, 'term': {'type': 'string', 'examples': ['Acamol'], 'description': 'Kept exactly as written in every protected translation.'}, 'created_at': {'type': 'string', 'examples': ['2026-01-15T09:30:00.000Z'], 'description': 'ISO 8601 timestamp.'}, 'translations': {'type': 'object', 'examples': [{'he': 'אקמול'}], 'properties': {'en': {'type': 'string'}, 'he': {'type': 'string'}, 'ru': {'type': 'string'}}, 'description': 'Optional required rendering per target language. When set for the target, it replaces the term; otherwise the term is kept verbatim.'}}}}}}
analyze_direction
Analyze RTL/LTR direction
Resolve the right-to-left / left-to-right structure of mixed Hebrew text: base direction, whether it mixes directions, dominant language and script, and the runs to render, where every left-to-right unit (a Latin term, a price, a range such as 10–20%, a date, a model number) stays whole. Send one `text`, or `fields` (a map of name → string, up to 100) to analyze a whole record at once. `base`: `auto` (default), `ltr` or `rtl`. Deterministic and free: no model, no character quota.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'title': 'AnalyzeRequest', 'properties': {'base': {'enum': ['auto', 'ltr', 'rtl'], 'type': 'string', 'default': 'auto', 'examples': ['auto'], 'description': 'Paragraph direction to resolve against. `auto` (default) uses the first strong letter.'}, 'text': {'type': 'string', 'examples': ['שלום world'], 'maxLength': 20000, 'minLength': 1, 'description': 'A single string, up to 20,000 characters. Send this or `fields`.'}, 'fields': {'type': 'object', 'examples': [{'title': 'מסמך Q3 ready', 'subtitle': 'Read the summary'}], 'description': 'A map of field name → string, up to 100 fields and 20,000 characters in total. Send this or `text`.', 'additionalProperties': {'type': 'string', 'maxLength': 20000}}}, 'description': 'Provide exactly one of `text` (a single string) or `fields` (a map of name → string). Max 20,000 chars per string; up to 100 fields.'}
Schéma de sortie
{'type': 'object', 'properties': {'fields': {'type': 'object', 'description': 'Present when the request sent `fields`: one analysis per field name.', 'additionalProperties': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Paragraph base direction. With `base: "auto"` this follows the Unicode first-strong rule, matching CSS `dir="auto"`.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Dominant BCP 47 language, from the dominant script.'}, 'runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs exactly as the Unicode Bidirectional Algorithm resolves them.'}, 'mixed': {'type': 'boolean', 'examples': [True], 'description': 'True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'Dominant ISO 15924 script.'}, 'display_runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap.'}}, 'description': 'Directionality metadata for one string.'}}, 'analysis': {'allOf': [{'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Paragraph base direction. With `base: "auto"` this follows the Unicode first-strong rule, matching CSS `dir="auto"`.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Dominant BCP 47 language, from the dominant script.'}, 'runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs exactly as the Unicode Bidirectional Algorithm resolves them.'}, 'mixed': {'type': 'boolean', 'examples': [True], 'description': 'True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'Dominant ISO 15924 script.'}, 'display_runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap.'}}, 'description': 'Directionality metadata for one string.'}, {'description': 'Present when the request sent `text`.'}]}}}
clinical_query
Hebrew question to English record query
Turn a Hebrew clinical question (up to 2,000 characters) into an English query for a record search or an English model. English terms, numbers and dates are kept exactly, and Hebrew spellings of drug names are mapped back to English, preferring the patient's own terms in `known_terms` and the account terms. Counts 3× toward the monthly character quota.
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'examples': ['האם המטופלת עדיין לוקחת מטפורמין?'], 'maxLength': 2000, 'minLength': 1, 'description': 'The Hebrew question, up to 2,000 characters.'}, 'glossary': {'type': 'object', 'examples': [{'metformin': 'מטפורמין'}], 'description': 'English term → Hebrew rendering, used to map the Hebrew back to English.', 'additionalProperties': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'known_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['metformin', 'lisinopril']], 'maxItems': 500, 'description': "English terms from the patient's record, used to map Hebrew spellings back. Up to 500. Account terms are added automatically."}}}
Schéma de sortie
{'type': 'object', 'properties': {'query': {'type': 'string', 'examples': ['Is the patient still taking metformin?'], 'description': 'English query for your record search.'}, 'terms': {'type': 'array', 'items': {'type': 'object', 'properties': {'hebrew': {'type': 'string', 'examples': ['מטפורמין']}, 'source': {'enum': ['known_terms', 'lexicon', 'glossary'], 'type': 'string', 'examples': ['known_terms'], 'description': 'Where the mapping came from.'}, 'english': {'type': 'string', 'examples': ['metformin']}}}, 'description': 'Hebrew spellings that were mapped back to English terms.'}, 'usage': {'type': 'object', 'properties': {'characters': {'type': 'integer', 'examples': [33]}}}}}
clinical_translate
Translate clinical English to verified Hebrew
Translate a complete English clinical text (a discharge summary, patient instructions, a visit note, a model's answer) into Israeli medical Hebrew for a clinician or a patient. Drug names, doses, lab values, units, ICD-10 codes, clinical abbreviations, identifiers and every number are kept exactly; every sentence is checked for numbers, negation and laterality and reviewed for meaning. A sentence that fails is retried, then returned in English with status `fallback`: unverified Hebrew is never returned. Treat fallback sentences as untranslated. `audience`: `clinician` (default, keeps BID/PO shorthand) or `patient` (plain words). Pass the patient's medication and problem lists as `protected_terms`, names as `redact_terms` (hidden from the model), `reader_gender` and `patient_gender` when known, and `date_order` (US records are MDY). Counts 3× toward the monthly character quota.
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'bidi': {'enum': ['isolate', 'none'], 'type': 'string', 'default': 'isolate', 'examples': ['isolate'], 'description': '`isolate` wraps English values in Unicode isolates so "5 mg" never renders as "mg 5". `none` returns plain text.'}, 'text': {'type': 'string', 'examples': ['Based on your records, you are taking Eliquis 5 mg twice a day. Your dose was changed on 03/04/2026.'], 'maxLength': 20000, 'minLength': 1, 'description': 'English text, 1 to 20,000 characters. Markdown lists, headings and tables keep their structure. Counts toward the monthly character quota.'}, 'audience': {'enum': ['clinician', 'patient'], 'type': 'string', 'default': 'clinician', 'examples': ['patient'], 'description': 'Who reads the Hebrew. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes dosing shorthand (BID, PRN) as plain words.'}, 'glossary': {'type': 'object', 'examples': [{'hypertension': 'יתר לחץ דם'}], 'description': 'English term → required Hebrew rendering. Up to 500 entries.', 'additionalProperties': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'date_order': {'enum': ['MDY', 'DMY'], 'type': 'string', 'default': 'MDY', 'examples': ['MDY'], 'description': 'How to read ambiguous numeric dates in the source. US records are MDY.'}, 'date_style': {'enum': ['hebrew', 'iso', 'keep'], 'type': 'string', 'default': 'hebrew', 'examples': ['hebrew'], 'description': '`hebrew` writes "4 במרץ 2026"; `iso` writes 2026-03-04; `keep` leaves unambiguous dates as written (an ambiguous one is still rewritten). A two-digit year is kept as written.'}, 'redact_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Dana Levi']], 'maxItems': 200, 'description': 'Kept verbatim and never shown to the model (patient and staff names). Up to 200.'}, 'reader_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['female'], 'description': 'Gender of the reader, the person the text calls "you". Omit when unknown.'}, 'patient_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['male'], 'description': 'Gender of the patient in third-person references. Inferred from he/she when omitted.'}, 'protected_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Eliquis 5 mg BID', 'atrial fibrillation']], 'maxItems': 500, 'description': "Kept verbatim. Pass the patient's medication and problem lists from the record. Up to 500, each up to 200 characters. Added to the account terms list for this request."}}}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'string', 'examples': ['med_a1b2c3d4e5f6'], 'description': 'Request identifier.'}, 'text': {'type': 'string', 'examples': ['את נוטלת Eliquis 5 mg פעמיים ביום. המינון שלך שונה ב־4 במרץ 2026.'], 'description': 'The whole Hebrew document: every segment joined with its prefix and suffix.'}, 'stats': {'type': 'object', 'properties': {'ok': {'type': 'integer', 'examples': [2]}, 'retried': {'type': 'integer', 'examples': [0]}, 'fallback': {'type': 'integer', 'examples': [0], 'description': 'Sentences returned in English. Treat them as untranslated.'}, 'segments': {'type': 'integer', 'examples': [2], 'description': 'Total sentences.'}, 'passthrough': {'type': 'integer', 'examples': [0]}}}, 'usage': {'type': 'object', 'properties': {'characters': {'type': 'integer', 'examples': [77], 'description': 'Characters charged.'}}}, 'segments': {'type': 'array', 'items': {'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['את נוטלת Eliquis 5 mg פעמיים ביום.'], 'description': 'Verified Hebrew, or the English source when status is `fallback`.'}, 'index': {'type': 'integer', 'examples': [0], 'description': 'Position of the sentence, from 0.'}, 'spans': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'type': 'string', 'examples': ['dose'], 'description': 'What was protected: `drug`, `dose`, `abbreviation`, `code`, `number`, `date`, `term`, `glossary`, `identifier`, `name` and others.'}, 'value': {'type': 'string', 'examples': ['5 mg'], 'description': 'The protected source value. Omitted for names and identifiers.'}, 'render': {'type': 'string', 'examples': ['4 במרץ 2026'], 'description': 'How the value was written in the Hebrew, when it was rewritten (dates).'}, 'ambiguous_date': {'type': 'boolean', 'examples': [True], 'description': 'True when a numeric date could be read two ways and `date_order` decided it.'}}}, 'description': 'Protected values in this sentence. Redacted names and identifiers are left out.'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'properties': {'code': {'type': 'string', 'examples': ['negation_lost'], 'description': 'Check that failed: `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `laterality_swapped`, `gender_mismatch`, `meaning`, `placeholder_missing`, `length_ratio`, `provider_error` and others.'}, 'detail': {'type': 'string', 'examples': ['The source says "no known allergies"; the translation drops the negation.'], 'description': 'Human-readable explanation.'}, 'severity': {'enum': ['error', 'warning'], 'type': 'string', 'examples': ['error'], 'description': '`error` blocks the sentence; `warning` is informational.'}}}, 'description': 'Why a sentence was retried or fell back. Empty for `ok`.'}, 'prefix': {'type': 'string', 'examples': ['- '], 'description': 'Markdown structure emitted before the text (list marker, heading).'}, 'source': {'type': 'string', 'examples': ['You are taking Eliquis 5 mg twice a day.'], 'description': 'The English sentence.'}, 'status': {'enum': ['ok', 'retried', 'fallback', 'passthrough'], 'type': 'string', 'examples': ['ok'], 'description': '`ok`: verified first time. `retried`: passed after one retry with a stronger model. `fallback`: no translation passed, `text` is the English. `passthrough`: structure or values only, no model needed.'}, 'suffix': {'type': 'string', 'examples': ['\n'], 'description': 'Whitespace or structure after the text. Join `prefix + text + suffix` for every segment to rebuild the document.'}}}, 'description': 'One entry per sentence, in order.'}}}
clinical_verify
Verify a Hebrew clinical translation
Check Hebrew that was produced some other way (for example by your own model) against its English clinical source: every drug, dose, lab value, code and number must appear exactly, no number may be added, dates must be unambiguous, and negation and laterality must survive. `verification: "strict"` adds an independent model review for meaning changes; `standard` (default) is deterministic. Returns pass or fail with every issue. Counts 3× toward the monthly character quota.
Schéma d’entrée
{'type': 'object', 'required': ['source', 'translation'], 'properties': {'source': {'type': 'string', 'examples': ['Metformin 500 mg BID since 03/04/2026.'], 'maxLength': 20000, 'minLength': 1, 'description': 'The English source, up to 20,000 characters.'}, 'glossary': {'type': 'object', 'examples': [{'hypertension': 'יתר לחץ דם'}], 'description': 'English term → required Hebrew rendering.', 'additionalProperties': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'date_order': {'enum': ['MDY', 'DMY'], 'type': 'string', 'default': 'MDY', 'examples': ['MDY'], 'description': 'How to read ambiguous numeric dates in the source.'}, 'translation': {'type': 'string', 'examples': ['Metformin 50 mg BID מאז 03/04/2026.'], 'maxLength': 40000, 'minLength': 1, 'description': 'The Hebrew to check, up to 40,000 characters.'}, 'redact_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Dana Levi']], 'maxItems': 200, 'description': 'Names replaced before the reviewer sees the text. Up to 200.'}, 'verification': {'enum': ['strict', 'standard'], 'type': 'string', 'default': 'standard', 'examples': ['standard'], 'description': '`standard` (default) runs the deterministic checks. `strict` adds an independent model review for meaning changes.'}, 'protected_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Metformin']], 'maxItems': 500, 'description': 'Terms that must appear verbatim. Up to 500.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'pass': {'type': 'boolean', 'examples': [False], 'description': 'True when no issue has severity `error`.'}, 'usage': {'type': 'object', 'properties': {'characters': {'type': 'integer', 'examples': [72], 'description': 'Characters charged: source plus translation.'}}}, 'issues': {'type': 'array', 'items': {'type': 'object', 'properties': {'code': {'type': 'string', 'examples': ['negation_lost'], 'description': 'Check that failed: `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `laterality_swapped`, `gender_mismatch`, `meaning`, `placeholder_missing`, `length_ratio`, `provider_error` and others.'}, 'detail': {'type': 'string', 'examples': ['The source says "no known allergies"; the translation drops the negation.'], 'description': 'Human-readable explanation.'}, 'severity': {'enum': ['error', 'warning'], 'type': 'string', 'examples': ['error'], 'description': '`error` blocks the sentence; `warning` is informational.'}}}, 'description': 'Every problem found.'}}}
delete_term
Delete an account term
Permanently delete one account term by its id (from list_terms or add_terms). Protected translations stop using it within 30 seconds. Free.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'examples': ['3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f'], 'description': 'The term id, from list_terms or add_terms.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'deleted': {'type': 'boolean'}}}
detect_language
Detect language
Detect the dominant language, script and direction of a string, with one segment per language. Built for short, code-switched input (chat messages, search queries, voice transcripts): a brand or acronym such as "PayPal" or "API" inside a Hebrew or Russian sentence does not change the dominant language. Use it to pick `source_lang` or the reply language before translating. Latin script is tagged `en`. Deterministic and free: no character quota.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'examples': ['Можно оплатить через PayPal сегодня?'], 'maxLength': 20000, 'minLength': 1, 'description': 'Text to classify, up to 20,000 characters. Built for short, code-switched input.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['ltr'], 'description': 'Base direction of the dominant language.'}, 'lang': {'type': 'string', 'examples': ['ru'], 'description': 'Dominant language (BCP 47). Latin script is tagged `en`.'}, 'script': {'type': 'string', 'examples': ['Cyrl'], 'description': 'Dominant ISO 15924 script.'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'properties': {'end': {'type': 'integer', 'examples': [28]}, 'lang': {'type': 'string', 'examples': ['en']}, 'text': {'type': 'string', 'examples': ['PayPal ']}, 'start': {'type': 'integer', 'examples': [21]}, 'script': {'type': 'string', 'examples': ['Latn']}}}, 'description': 'Same-script stretches in order, e.g. ru · en ("CBC") · ru. Latin script is tagged en.'}, 'languages': {'type': 'array', 'items': {'type': 'object', 'properties': {'lang': {'type': 'string', 'examples': ['ru']}, 'share': {'type': 'number', 'examples': [0.941], 'description': 'Share of letters, 0 to 1.'}}}, 'description': 'Every language found, largest share first.'}, 'confidence': {'type': 'number', 'examples': [0.941], 'description': 'Share of letters in the dominant language, 0 to 1.'}}}
health
Service health
Check that the HebrewCore API is up and its database reachable. Needs no API key and uses no quota.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'db': {'type': 'string', 'examples': ['ok'], 'description': '`ok`, or `error` when the database check failed.'}, 'status': {'type': 'string', 'examples': ['ok'], 'description': '`ok` when the API is serving.'}, 'version': {'type': 'string', 'examples': ['1.0.0'], 'description': 'API version.'}}}
list_languages
List supported languages
List every language HebrewCore translates to and from, with its code (use it as `source_lang` / `target_lang`), English and native name, and writing direction. Protected translation covers Hebrew, English and Russian. Free.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'languages': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Writing direction.'}, 'code': {'type': 'string', 'examples': ['he'], 'description': 'BCP 47 code to pass as `source_lang` or `target_lang`.'}, 'name': {'type': 'string', 'examples': ['Hebrew'], 'description': 'English name.'}, 'native': {'type': 'string', 'examples': ['עברית'], 'description': 'Name in the language itself.'}}}, 'description': 'Every supported language.'}}}
list_terms
List account terms
List the account's protected terms: drug, product and brand names that every protected translation on the account keeps exactly as written (or renders with the term's per-language translation when one is set). Returns each term's id, which delete_term needs. Free.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'limit': {'type': 'integer'}, 'terms': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string', 'examples': ['3f2c1a9e-8b7d-4c6e-9f10-2a3b4c5d6e7f']}, 'note': {'type': ['string', 'null'], 'examples': ['paracetamol 500 mg brand'], 'description': 'Your own note, up to 500 characters.'}, 'term': {'type': 'string', 'examples': ['Acamol'], 'description': 'Kept exactly as written in every protected translation.'}, 'created_at': {'type': 'string', 'examples': ['2026-01-15T09:30:00.000Z'], 'description': 'ISO 8601 timestamp.'}, 'translations': {'type': 'object', 'examples': [{'he': 'אקמול'}], 'properties': {'en': {'type': 'string'}, 'he': {'type': 'string'}, 'ru': {'type': 'string'}}, 'description': 'Optional required rendering per target language. When set for the target, it replaces the term; otherwise the term is kept verbatim.'}}}}}}
strip_nikud
Remove nikud
Remove nikud, dagesh and cantillation marks from Hebrew text, keeping punctuation such as the maqaf. Use it to normalize text for search keys, comparison and de-duplication, or to get display text back from vocalized text. Deterministic and free: no character quota.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'examples': ['שָׁלוֹם'], 'maxLength': 20000, 'minLength': 1, 'description': 'Hebrew text with nikud or cantillation, up to 20,000 characters.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['שָׁלוֹם'], 'description': 'The input.'}, 'stripped': {'type': 'string', 'examples': ['שלום'], 'description': 'The text without nikud, dagesh or cantillation. Punctuation such as the maqaf is kept.'}}}
translate
Translate text
Translate one text between Hebrew, English, Russian and the other languages from list_languages. Use it for product, support, interface, finance, legal and general clinical text. Returns the translation with its direction metadata. Protected translation: set `protect: true`, a `domain` (`general`, `clinical`, `finance`, `legal`) or any protection field, and prices, quantities, numbers, dates, codes, identifiers, product names, interface variables ({name}, %s) and `protected_terms` are kept exactly as written, and every sentence is verified; a sentence that cannot be verified comes back in the source language (status `fallback`) instead of a wrong value. `finance` also protects IBANs, card and account numbers and checks credit/debit direction; `legal` keeps clause references, citations and defined terms and checks shall/may modality; `clinical` protects drugs, doses and lab values. Gender: `listener_gender` is the reader ("you"), `speaker_gender` the speaker ("I", e.g. an assistant). `glossary` maps source terms to required renderings; `redact_terms` keeps names exact and hidden from the model. `message_format: "icu"` translates an ICU MessageFormat string and rewrites plural branches for Hebrew and Russian. `quality`: `fast`, `balanced` (default) or `smartest`. Uses the monthly character quota. For many short strings use translate_batch; for full English clinical documents into Hebrew use clinical_translate.
Schéma d’entrée
{'type': 'object', 'required': ['text', 'target_lang'], 'properties': {'bidi': {'enum': ['isolate', 'none'], 'type': 'string', 'examples': ['none'], 'description': '`isolate` wraps protected values in Unicode isolates in Hebrew output. Default none; see /v1/wrap.'}, 'text': {'type': 'string', 'examples': ['Welcome to your account'], 'maxLength': 20000, 'minLength': 1, 'description': 'Text to translate, 1 to 20,000 characters. Counts toward the monthly character quota.'}, 'domain': {'enum': ['general', 'clinical', 'finance', 'legal'], 'type': 'string', 'examples': ['finance'], 'description': '`general` (default) for product, commerce, support and interface text. `clinical` adds clinical register and drug, dose, lab and abbreviation detection. `finance` adds a formal banking register, protects IBANs, SWIFT/BIC codes, bank account numbers (including Israeli bank-branch-account), Israeli ID numbers and card numbers (check digits verified; these values are never shown to the model), invoice, policy and transaction references, signed amounts, rates and basis points, and checks that every money direction (credit/debit, deposit/withdrawal, buy/sell, increase/decrease, gain/loss, who owes whom) is kept. `legal` adds a formal legal register, protects clause and section references (Section 4.2, Clause 7(b), סעיף 12(א), § 3) and case and statute citations, renders each defined term ("the Company") the same way throughout, and checks that modality (shall, may, shall not, is not required to) is kept. Any value implies `protect`.'}, 'gender': {'enum': ['male', 'female', 'general'], 'type': 'string', 'examples': ['general'], 'description': 'Grammatical gender for the reader where the target language marks it. For assistants, prefer `listener_gender` and `speaker_gender`.'}, 'protect': {'type': 'boolean', 'examples': [True], 'description': 'Keep prices, quantities, numbers, dates, codes, identifiers, product names, interface variables ({name}, %s) and <keep>…</keep> text exactly as written, and verify every sentence. Implied by any protection field. Hebrew, English and Russian. Account terms switch it on automatically for these pairs.'}, 'quality': {'enum': ['fast', 'balanced', 'smartest'], 'type': 'string', 'default': 'balanced', 'examples': ['balanced'], 'description': '`fast`: lowest latency, for high volume and short strings. `balanced`: the default. `smartest`: maximum nuance for long or sensitive text.'}, 'audience': {'enum': ['clinician', 'patient'], 'type': 'string', 'examples': ['patient'], 'description': 'Clinical domain register. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes it as plain words.'}, 'glossary': {'type': 'object', 'examples': [{'Checkout': 'לתשלום'}], 'description': 'Source term → required rendering in the target language. Up to 500 entries. Wins over an account term with the same text.', 'additionalProperties': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'date_order': {'enum': ['MDY', 'DMY'], 'type': 'string', 'examples': ['MDY'], 'description': 'How to read ambiguous numeric dates such as 04/03/2026. Default MDY for English sources, DMY for Hebrew and Russian.'}, 'date_style': {'enum': ['hebrew', 'iso', 'keep'], 'type': 'string', 'examples': ['hebrew'], 'description': '`hebrew` (default) spells the month out in the target language ("4 במרץ 2026", "4 марта 2026 г."); `iso`; `keep` (unambiguous dates only).'}, 'source_lang': {'type': 'string', 'examples': ['auto'], 'description': 'BCP 47 source language, or `auto` (default) to detect it.'}, 'target_lang': {'type': 'string', 'examples': ['he'], 'description': 'BCP 47 target language, e.g. `he`, `en`, `ru`. See GET /v1/languages.'}, 'redact_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Dana Levi']], 'maxItems': 200, 'description': 'Kept exactly and never shown to the model: customer names and other personal data. Up to 200.'}, 'transliterate': {'type': 'boolean', 'default': False, 'examples': [False], 'description': 'Include a Latin transliteration when the target is Hebrew.'}, 'message_format': {'enum': ['icu'], 'type': 'string', 'examples': ['icu'], 'description': '`icu`: the text is an ICU MessageFormat message. The result is a valid ICU message in the target language: arguments ({name}, {count, number}, {d, date, short}) and `#` are kept, plural and selectordinal branches are rewritten for the target language\'s CLDR categories (Hebrew one, two, other; Russian one, few, many, other; English one, other; exact matches such as =0 kept), and select keys are kept. A plural or select inside a sentence is moved to the top so every branch is a whole sentence; `protection.segments` lists each branch sentence. Always protected; Hebrew, English and Russian. Invalid ICU returns 400 `invalid_message_format`; a message that cannot be verified comes back unchanged with `protection.status: "fallback"`.'}, 'patient_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['male'], 'description': 'Clinical domain: gender of a patient referred to in the third person.'}, 'speaker_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['female'], 'description': 'Gender of the speaker ("I"), for an assistant or brand voice: מצאתי, я нашла / я нашёл.'}, 'listener_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['female'], 'description': 'Gender of the reader ("you"): תרצי / תרצה. Hebrew and Russian mark it; English does not. Without it, Hebrew interface text uses neutral forms.'}, 'protected_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Wireless Earbuds Pro', 'A-10234']], 'maxItems': 500, 'description': 'Terms kept exactly as written: product names, brand names, SKUs. Up to 500, each up to 200 characters. Added to the account terms list for this request.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'string', 'examples': ['txn_a1b2c3d4e5f6'], 'description': 'Request identifier. Include it when you contact support.'}, 'usage': {'type': 'object', 'properties': {'characters': {'type': 'integer', 'examples': [23], 'description': 'Characters charged to the monthly quota for this request.'}}, 'description': 'What this request consumed.'}, 'source': {'allOf': [{'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Paragraph base direction. With `base: "auto"` this follows the Unicode first-strong rule, matching CSS `dir="auto"`.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Dominant BCP 47 language, from the dominant script.'}, 'runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs exactly as the Unicode Bidirectional Algorithm resolves them.'}, 'mixed': {'type': 'boolean', 'examples': [True], 'description': 'True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'Dominant ISO 15924 script.'}, 'display_runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap.'}}, 'description': 'Directionality metadata for one string.'}, {'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['Welcome to your account'], 'description': 'The source text as sent.'}}}], 'description': 'The source text with its directionality metadata.'}, 'quality': {'type': 'string', 'examples': ['balanced'], 'description': 'Quality tier used.'}, 'translation': {'allOf': [{'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Paragraph base direction. With `base: "auto"` this follows the Unicode first-strong rule, matching CSS `dir="auto"`.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Dominant BCP 47 language, from the dominant script.'}, 'runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs exactly as the Unicode Bidirectional Algorithm resolves them.'}, 'mixed': {'type': 'boolean', 'examples': [True], 'description': 'True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'Dominant ISO 15924 script.'}, 'display_runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap.'}}, 'description': 'Directionality metadata for one string.'}, {'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['ברוכים הבאים לחשבון שלך'], 'description': 'The translation, or the source text for sentences that fell back.'}, 'protection': {'type': 'object', 'properties': {'spans': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'type': 'string', 'examples': ['date'], 'description': 'What was protected: `term`, `glossary`, `number`, `ordinal`, `date`, `identifier`, `email`, `url`, `template` (interface variables), `keep`, `markup`, `code_inline`, `name` (redacted); in the clinical domain `drug`, `dose`, `abbreviation`, `code`; in the finance domain `account` (IBAN, BIC, bank account), `id_number`, `card` (all three redacted), `reference`; in the legal domain `clause`, `citation`, `defined_term` (its `render` is the rendering used throughout).'}, 'value': {'type': 'string', 'examples': ['04/03/2026'], 'description': 'The protected source value. Omitted for redacted values.'}, 'render': {'type': 'string', 'examples': ['3 באפריל 2026'], 'description': 'How the value was written in the translation, when it was rewritten (dates).'}, 'ambiguous_date': {'type': 'boolean', 'examples': [True], 'description': 'True when a numeric date could be read two ways and `date_order` decided it.'}}}, 'description': 'Every protected value, in source order.'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'properties': {'code': {'type': 'string', 'examples': ['term_missing'], 'description': 'Check that failed, e.g. `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `gender_mismatch`, `meaning`, `placeholder_missing`; finance: `direction_swapped` (error), `direction_lost` (warning); legal: `modality_changed`, `defined_term_changed`.'}, 'detail': {'type': 'string', 'examples': ['"A-10234" (term) is missing or altered.']}, 'severity': {'enum': ['error', 'warning'], 'type': 'string', 'examples': ['error']}}}, 'description': 'Problems found by the checks. Empty when every sentence passed.'}, 'status': {'enum': ['ok', 'retried', 'fallback', 'passthrough'], 'type': 'string', 'examples': ['ok'], 'description': 'Worst sentence status. `ok`: verified first time. `retried`: a sentence was retried with a stronger model and then passed. `fallback`: at least one sentence could not be verified and is returned in the source language. `passthrough`: no model was needed.'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['האם תרצי שאקבע את המשלוח ל־3 באפריל 2026?']}, 'source': {'type': 'string', 'examples': ['Would you like me to schedule delivery for 04/03/2026?']}, 'status': {'enum': ['ok', 'retried', 'fallback', 'passthrough'], 'type': 'string', 'examples': ['ok']}}}, 'description': 'Per-sentence result, in order.'}, 'source_lang': {'type': 'string', 'examples': ['en'], 'description': 'Source language used for protection (detected when `source_lang` is `auto`).'}}, 'description': 'Present when the request used protected translation.'}, 'transliteration': {'type': ['string', 'null'], 'examples': ["Bruchim haba'im lakheshbon shelkha"], 'description': 'Latin transliteration of a Hebrew result when `transliterate` was true, otherwise null.'}}}], 'description': 'The translation with its directionality metadata.'}}}
translate_batch
Translate a batch of strings
Translate 1 to 50 strings (each up to 5,000 characters) into one target language in a single call; results come back in input order. Use it for the interface strings of a screen, a string file, or the fields of a product. Takes every option of translate: `protect`, `domain` (`general`, `clinical`, `finance`, `legal`), `protected_terms`, `glossary`, `listener_gender`, `speaker_gender`, `message_format: "icu"` and `quality`. With protection, interface variables such as {count}, {{name}} and %s, numbers, prices and dates stay exactly as written, and each item carries its own verification status. Uses the monthly character quota.
Schéma d’entrée
{'type': 'object', 'required': ['items', 'target_lang'], 'properties': {'bidi': {'enum': ['isolate', 'none'], 'type': 'string', 'examples': ['none'], 'description': '`isolate` wraps protected values in Unicode isolates in Hebrew output. Default none; see /v1/wrap.'}, 'items': {'type': 'array', 'items': {'type': 'string', 'maxLength': 5000, 'minLength': 1}, 'examples': [['{count} items in your cart', 'Checkout', 'Last updated %s ago']], 'maxItems': 50, 'minItems': 1, 'description': '1 to 50 strings, each up to 5,000 characters. A protected batch carries at most 20,000 characters in total.'}, 'domain': {'enum': ['general', 'clinical', 'finance', 'legal'], 'type': 'string', 'examples': ['finance'], 'description': '`general` (default) for product, commerce, support and interface text. `clinical` adds clinical register and drug, dose, lab and abbreviation detection. `finance` adds a formal banking register, protects IBANs, SWIFT/BIC codes, bank account numbers (including Israeli bank-branch-account), Israeli ID numbers and card numbers (check digits verified; these values are never shown to the model), invoice, policy and transaction references, signed amounts, rates and basis points, and checks that every money direction (credit/debit, deposit/withdrawal, buy/sell, increase/decrease, gain/loss, who owes whom) is kept. `legal` adds a formal legal register, protects clause and section references (Section 4.2, Clause 7(b), סעיף 12(א), § 3) and case and statute citations, renders each defined term ("the Company") the same way throughout, and checks that modality (shall, may, shall not, is not required to) is kept. Any value implies `protect`.'}, 'gender': {'enum': ['male', 'female', 'general'], 'type': 'string', 'examples': ['general'], 'description': 'Grammatical gender for the reader where the target language marks it.'}, 'protect': {'type': 'boolean', 'examples': [True], 'description': 'Keep prices, quantities, numbers, dates, codes, identifiers, product names, interface variables ({name}, %s) and <keep>…</keep> text exactly as written, and verify every sentence. Implied by any protection field. Hebrew, English and Russian. Account terms switch it on automatically for these pairs.'}, 'quality': {'enum': ['fast', 'balanced', 'smartest'], 'type': 'string', 'default': 'balanced', 'examples': ['balanced'], 'description': 'Quality tier, applied to every item.'}, 'audience': {'enum': ['clinician', 'patient'], 'type': 'string', 'examples': ['patient'], 'description': 'Clinical domain register. `clinician` (default) keeps shorthand such as BID and PO; `patient` writes it as plain words.'}, 'glossary': {'type': 'object', 'examples': [{'Checkout': 'לתשלום'}], 'description': 'Source term → required rendering in the target language. Up to 500 entries. Wins over an account term with the same text.', 'additionalProperties': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'date_order': {'enum': ['MDY', 'DMY'], 'type': 'string', 'examples': ['MDY'], 'description': 'How to read ambiguous numeric dates such as 04/03/2026. Default MDY for English sources, DMY for Hebrew and Russian.'}, 'date_style': {'enum': ['hebrew', 'iso', 'keep'], 'type': 'string', 'examples': ['hebrew'], 'description': '`hebrew` (default) spells the month out in the target language ("4 במרץ 2026", "4 марта 2026 г."); `iso`; `keep` (unambiguous dates only).'}, 'source_lang': {'type': 'string', 'examples': ['auto'], 'description': 'BCP 47 source language, or `auto` (default).'}, 'target_lang': {'type': 'string', 'examples': ['he'], 'description': 'BCP 47 target language, applied to every item.'}, 'redact_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Dana Levi']], 'maxItems': 200, 'description': 'Kept exactly and never shown to the model: customer names and other personal data. Up to 200.'}, 'transliterate': {'type': 'boolean', 'default': False, 'examples': [False], 'description': 'Include a Latin transliteration when the target is Hebrew.'}, 'message_format': {'enum': ['icu'], 'type': 'string', 'examples': ['icu'], 'description': '`icu`: every item is an ICU MessageFormat message. Each result is a valid ICU message in the target language: arguments ({name}, {count, number}, {d, date, short}) and `#` are kept, plural and selectordinal branches are rewritten for the target language\'s CLDR categories (Hebrew one, two, other; Russian one, few, many, other; English one, other; exact matches such as =0 kept), and select keys are kept. A plural or select inside a sentence is moved to the top so every branch is a whole sentence; `protection.segments` lists each branch sentence. Always protected; Hebrew, English and Russian. Invalid ICU returns 400 `invalid_message_format`; a message that cannot be verified comes back unchanged with `protection.status: "fallback"`.'}, 'patient_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['male'], 'description': 'Clinical domain: gender of a patient referred to in the third person.'}, 'speaker_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['female'], 'description': 'Gender of the speaker ("I"), for an assistant or brand voice: מצאתי, я нашла / я нашёл.'}, 'listener_gender': {'enum': ['male', 'female'], 'type': 'string', 'examples': ['female'], 'description': 'Gender of the reader ("you"): תרצי / תרצה. Hebrew and Russian mark it; English does not. Without it, Hebrew interface text uses neutral forms.'}, 'protected_terms': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'examples': [['Wireless Earbuds Pro', 'A-10234']], 'maxItems': 500, 'description': 'Terms kept exactly as written: product names, brand names, SKUs. Up to 500, each up to 200 characters. Added to the account terms list for this request.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'usage': {'type': 'object', 'properties': {'characters': {'type': 'integer', 'examples': [23], 'description': 'Characters charged to the monthly quota for this request.'}}, 'description': 'What this request consumed.'}, 'results': {'type': 'array', 'items': {'allOf': [{'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Paragraph base direction. With `base: "auto"` this follows the Unicode first-strong rule, matching CSS `dir="auto"`.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Dominant BCP 47 language, from the dominant script.'}, 'runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs exactly as the Unicode Bidirectional Algorithm resolves them.'}, 'mixed': {'type': 'boolean', 'examples': [True], 'description': 'True when the text contains both strong right-to-left and strong left-to-right letters. Digits and invisible marks do not count.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'Dominant ISO 15924 script.'}, 'display_runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'Runs for display: every left-to-right unit (a Latin term, a number with its unit, a range, a date, a percentage, a comparison such as <5) is one run, so it never splits or mirrors. Render these, or use /v1/wrap.'}}, 'description': 'Directionality metadata for one string.'}, {'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['ברוכים הבאים לחשבון שלך'], 'description': 'The translation, or the source text for sentences that fell back.'}, 'protection': {'type': 'object', 'properties': {'spans': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'type': 'string', 'examples': ['date'], 'description': 'What was protected: `term`, `glossary`, `number`, `ordinal`, `date`, `identifier`, `email`, `url`, `template` (interface variables), `keep`, `markup`, `code_inline`, `name` (redacted); in the clinical domain `drug`, `dose`, `abbreviation`, `code`; in the finance domain `account` (IBAN, BIC, bank account), `id_number`, `card` (all three redacted), `reference`; in the legal domain `clause`, `citation`, `defined_term` (its `render` is the rendering used throughout).'}, 'value': {'type': 'string', 'examples': ['04/03/2026'], 'description': 'The protected source value. Omitted for redacted values.'}, 'render': {'type': 'string', 'examples': ['3 באפריל 2026'], 'description': 'How the value was written in the translation, when it was rewritten (dates).'}, 'ambiguous_date': {'type': 'boolean', 'examples': [True], 'description': 'True when a numeric date could be read two ways and `date_order` decided it.'}}}, 'description': 'Every protected value, in source order.'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'properties': {'code': {'type': 'string', 'examples': ['term_missing'], 'description': 'Check that failed, e.g. `term_missing`, `date_missing`, `number_added`, `digits_added`, `negation_lost`, `laterality_lost`, `gender_mismatch`, `meaning`, `placeholder_missing`; finance: `direction_swapped` (error), `direction_lost` (warning); legal: `modality_changed`, `defined_term_changed`.'}, 'detail': {'type': 'string', 'examples': ['"A-10234" (term) is missing or altered.']}, 'severity': {'enum': ['error', 'warning'], 'type': 'string', 'examples': ['error']}}}, 'description': 'Problems found by the checks. Empty when every sentence passed.'}, 'status': {'enum': ['ok', 'retried', 'fallback', 'passthrough'], 'type': 'string', 'examples': ['ok'], 'description': 'Worst sentence status. `ok`: verified first time. `retried`: a sentence was retried with a stronger model and then passed. `fallback`: at least one sentence could not be verified and is returned in the source language. `passthrough`: no model was needed.'}, 'segments': {'type': 'array', 'items': {'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['האם תרצי שאקבע את המשלוח ל־3 באפריל 2026?']}, 'source': {'type': 'string', 'examples': ['Would you like me to schedule delivery for 04/03/2026?']}, 'status': {'enum': ['ok', 'retried', 'fallback', 'passthrough'], 'type': 'string', 'examples': ['ok']}}}, 'description': 'Per-sentence result, in order.'}, 'source_lang': {'type': 'string', 'examples': ['en'], 'description': 'Source language used for protection (detected when `source_lang` is `auto`).'}}, 'description': 'Present when the request used protected translation.'}, 'transliteration': {'type': ['string', 'null'], 'examples': ["Bruchim haba'im lakheshbon shelkha"], 'description': 'Latin transliteration of a Hebrew result when `transliterate` was true, otherwise null.'}}}], 'description': 'The translation with its directionality metadata.'}, 'description': 'One translation per item, in input order.'}}}
transliterate
Transliterate Hebrew ↔ Latin
Romanize Hebrew into Latin letters (`direction: "he-to-latin"`, the default), or write Latin spelling in Hebrew letters (`direction: "latin-to-he"`) for name entry and search. Up to 5,000 characters. Uses the monthly character quota.
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'examples': ['שלום'], 'maxLength': 5000, 'minLength': 1, 'description': 'Text to transliterate, up to 5,000 characters.'}, 'direction': {'enum': ['he-to-latin', 'latin-to-he'], 'type': 'string', 'default': 'he-to-latin', 'examples': ['he-to-latin'], 'description': '`he-to-latin` (default) romanizes Hebrew. `latin-to-he` writes Latin spelling in Hebrew letters, for name entry and search.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'text': {'type': 'string', 'examples': ['שלום'], 'description': 'The input.'}, 'scheme': {'type': 'string', 'examples': ['general'], 'description': 'Romanization scheme used.'}, 'direction': {'type': 'string', 'examples': ['he-to-latin'], 'description': 'Direction used.'}, 'transliteration': {'type': 'string', 'examples': ['shalom'], 'description': 'The transliterated text.'}}}
wrap_for_display
Wrap a line for display
Make one mixed Hebrew/English display line render correctly: every left-to-right unit (a Latin term, a price, a number with its unit, a range such as "10–20%", a date, a comparison such as "<5") is kept whole and in order, so nothing is reversed or mirrored inside a Hebrew line. `format`: `html` (dir spans, for web and React), `isolate` (Unicode isolates, for iOS, Android 7+ and browsers) or `marks` (LRM/RLM, for any renderer including older Android). Pass `base: "rtl"` for a Hebrew line that starts with a Latin term. Deterministic and free: no character quota.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'base': {'enum': ['auto', 'ltr', 'rtl'], 'type': 'string', 'default': 'auto', 'examples': ['rtl'], 'description': 'Paragraph direction of the display surface. Pass `rtl` for a Hebrew line even when it starts with a Latin term.'}, 'text': {'type': 'string', 'examples': ['הנחה: 10–20% על Galaxy S25 עד 31/12'], 'maxLength': 20000, 'minLength': 1, 'description': 'The display line, up to 20,000 characters.'}, 'format': {'enum': ['html', 'isolate', 'marks'], 'type': 'string', 'default': 'html', 'examples': ['html'], 'description': '`html` for the web; `isolate` (Unicode isolates) for modern text engines; `marks` (LRM/RLM) for every renderer, including older Android.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Paragraph direction used.'}, 'runs': {'type': 'array', 'items': {'type': 'object', 'properties': {'dir': {'enum': ['ltr', 'rtl'], 'type': 'string', 'examples': ['rtl'], 'description': 'Resolved direction of the run.'}, 'end': {'type': 'integer', 'examples': [5], 'description': 'UTF-16 offset after the last character, exclusive.'}, 'lang': {'type': 'string', 'examples': ['he'], 'description': 'Best-effort BCP 47 language of the run, from its script. `und` when undetermined (numbers, symbols).'}, 'text': {'type': 'string', 'examples': ['שלום '], 'description': 'The run text. Equals `input.slice(start, end)`.'}, 'start': {'type': 'integer', 'examples': [0], 'description': 'UTF-16 offset of the first character, inclusive.'}, 'script': {'type': 'string', 'examples': ['Hebr'], 'description': 'ISO 15924 script of the run: `Hebr`, `Latn`, `Cyrl`, `Arab`, or `Zyyy` for digits and punctuation only.'}}, 'description': 'A maximal stretch of text with one direction, in logical order.'}, 'description': 'The display runs the output was built from.'}, 'format': {'type': 'string', 'examples': ['html'], 'description': 'Format used.'}, 'output': {'type': 'string', 'examples': ['<span dir="rtl">הנחה: <span dir="ltr" lang="und">10–20%</span> על <span dir="ltr" lang="en">Galaxy S25</span> עד <span dir="ltr" lang="und">31/12</span></span>'], 'description': 'Render-ready text: HTML with `dir` spans, or the text with Unicode isolates or direction marks inserted.'}}}
Ajouté
health
27 September 2026 02:40
Ajouté
clinical_verify
27 September 2026 02:40
Ajouté
clinical_query
27 September 2026 02:40
Ajouté
clinical_translate
27 September 2026 02:40
Ajouté
delete_term
27 September 2026 02:40
Ajouté
add_terms
27 September 2026 02:40
Ajouté
list_terms
27 September 2026 02:40
Ajouté
list_languages
27 September 2026 02:40
Ajouté
strip_nikud
27 September 2026 02:40
Ajouté
add_nikud
27 September 2026 02:40
Ajouté
transliterate
27 September 2026 02:40
Ajouté
wrap_for_display
27 September 2026 02:40
Ajouté
detect_language
27 September 2026 02:40
Ajouté
analyze_direction
27 September 2026 02:40
Ajouté
translate_batch
27 September 2026 02:40
Ajouté
translate
27 September 2026 02:40